Poszukuję dobrej instrukcji SQL, aby wybrać wszystkie wiersze z poprzedniego dnia z jednej tabeli. Tabela zawiera jedną kolumnę datetime. Używam programu SQL Server 2005.Instrukcja SQL, aby wybrać wszystkie wiersze z poprzedniego dnia
Odpowiedz
dostać dzisiaj Nie czas:
SELECT dateadd(day,datediff(day,0,GETDATE()),0)
się yestersday czasu:
SELECT dateadd(day,datediff(day,1,GETDATE()),0)
kwerendy dla wszystkich wierszy z tylko wczoraj:
select
*
from yourTable
WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0)
AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)
nie można przetestować go teraz, ale:
select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)
Aby uzyskać "Dzisiaj" wartość w SQL:
convert(date, GETDATE())
aby "wczoraj" :
DATEADD(day, -1, convert(date, GETDATE()))
Aby uzyskać "dzisiaj minus X dni": zmień -1 na -X.
Więc dla wszystkich wczorajszych rzędach, masz:
select * from tablename
where date >= DATEADD(day, -1, convert(date, GETDATE()))
and date < convert(date, GETDATE())
„data” dataType robi istnieje w SQL Server 2005. Gdy używam DateTime zamiast pobyty wartości czasu i obliczanie dzieje się nie od 0 do 12, ale od czasu uruchomienia zapytania – rudimenter
Mój błąd. Nie widziałem, że masz do czynienia z SQL Server 2005. Rzeczywiście, mój kod działa tylko dla SQL Server 2008. – Konamiman
Zawsze uważałem, że DATEADD (dzień, ....) było marnotrawstwem, po prostu dodaj lub odejmij liczbę dni w stosunku do daty: _WYBIERZ GETDATE() - 1_ –
Jest to naprawdę stara nitka, ale tutaj jest moja opinia. Zamiast 2 różnych klauzul, jeden większy niż i mniejszy niż. Używam poniższej składni do wybierania rekordów z daty. Jeśli chcesz zakres dat, to wcześniejsze odpowiedzi są drogą do zrobienia.
SELECT * FROM TABLE_NAME WHERE
DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0
w powyższym przypadku X będzie -1 do wczorajszych rekordów
SELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);
Innym sposobem, aby poinformować go "Yesterday" ...
Select * from TABLE
where Day(DateField) = (Day(GetDate())-1)
and Month(DateField) = (Month(GetDate()))
and Year(DateField) = (Year(getdate()))
To niewykluczone nie zadziała dobrze 1 stycznia, a także pierwszego dnia każdego miesiąca. Ale w locie to jest skuteczne.
Wygląda na to, że brakuje oczywistej odpowiedzi. Aby uzyskać wszystkie dane z tabeli (TTable), gdzie kolumna (DatetimeColumn) jest datetime ze znacznikiem czasu następujące zapytanie można stosować:
SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday
ten może być łatwo zmieniona na dzisiaj, ostatniego miesiąca, w ubiegłym roku, itp
należy to zrobić:
WHERE `date` = CURDATE() - INTERVAL 1 DAY
W SQL Server zrobić tak:
where cast(columnName as date) = cast(getdate() -1 as date)
Do tej pory należy oblewać obie strony wyrażenia, aby uniknąć problemów z formatowaniem czasu.
Jeśli trzeba kontrolować odstęp bardziej szczegółowo, to należy spróbować czegoś takiego:
declare @start datetime = cast(getdate() - 1 as date)
declare @end datetime = cast(getdate() - 1 as date)
set @end = dateadd(second, 86399, @end)
- 1. MySQL: Zapytanie, aby uzyskać wszystkie wiersze z poprzedniego miesiąca
- 2. jak uzyskać zapisy z poprzedniego dnia za pomocą tsql?
- 3. Instrukcja MYSQL, aby szybko wybrać grupę z tabeli n: n
- 4. Znajdź pierwszego dnia poprzedniego miesiąca w javascript
- 5. Jak wybrać kolumny jako wiersze?
- 6. Instrukcja SQL, aby uzyskać typ kolumny
- 7. Skonfiguruj JQGrid, aby wszystkie wiersze były edytowalne?
- 8. Jak wybrać wiersze według zakresu?
- 9. Czas przechowywania dnia w SQL
- 10. W SQL, jak wybrać Top 2 wiersze dla każdej grupy
- 11. Co to jest instrukcja SQL, aby wybrać element, który ma kilka atrybutów na liście elementów/atrybutów?
- 12. Instrukcja SQL, aby uzyskać wszystkich klientów bez zamówień.
- 13. Jak uzyskać ostatniego dnia poprzedniego miesiąca w JavaScript lub JQuery
- 14. Zdobądź daty pierwszego i ostatniego dnia poprzedniego miesiąca w C#
- 15. Mysql pobrać wszystkie wiersze z limitem
- 16. Instrukcja SQL, aby znaleźć ostatnie słowo w ciągu znaków
- 17. jQuery Datatables: iDisplayLength ustawiony na -1, aby wyświetlić wszystkie wiersze
- 18. Python - Numpy: Jak mogę jednocześnie wybrać wszystkie nieparzyste wiersze i wszystkie kolumny parzyste tablicy
- 19. SQL Server: sprawdź, czy wszystkie wiersze istnieje w innej tabeli
- 20. Jak usunąć zduplikowane wiersze z SQL?
- 21. Pobierz wszystkie elementy ListView (wiersze)
- 22. PL/SQL: czy istnieje instrukcja, aby całkowicie zatrzymać wykonywanie skryptu?
- 23. Aby zobaczyć wszystkie wiersze polecenia w oknie wyjściowym podczas kompilowania
- 24. LEFT JOIN nie wraca wszystkie wiersze
- 25. Instrukcja SQL UPDATE z WHERE EXISTS
- 26. Jak usunąć wszystkie wiersze z siatki Kendo
- 27. Usunąć wszystkie wiersze z tabeli, rzuca nullpointer
- 28. SlickGrid: odznacz wszystkie wiersze w
- 29. Nightwatch, aby wybrać opcję z pola wyboru
- 30. Jak wybrać wszystkie wiersze z refkursora zwróconego przez funkcję PL/pgSQL?
JEŚLI POTRZEBUJĘ TAKŻE TAKŻE? – Neo
@ashuthinks, twój komentarz nie ma dla mnie sensu. Oryginalne pytanie z pytaniem, jak zdobyć wiersze z poprzedniego dnia. Aby to zrobić, musisz być w stanie uzyskać tylko dzisiejszą datę (brak czasu) i wczorajszą datę (brak czasu). Używasz tych (ponadczasowych) dat w klauzuli "WHERE". Jednak 'SELECT *' zwróci wszystkie daty z ich oryginalnymi czasami. –
datediff podaje "Błędny błąd licznika parametrów". i http://stackoverflow.com/a/18926156/3007408 mówi, że datediff może używać tylko 2 parametrów. jakiekolwiek rozwiązanie? – Sp0T