Ich bin auf der Suche nach einer guten SQL-Anweisung, um alle Zeilen des Vortages aus einer Tabelle auszuwählen. Die Tabelle enthält eine Datetime-Spalte. Ich bin mit SQL Server 2005.SQL-Anweisung zum Auswählen aller Zeilen vom vorherigen Tag
Antwort
heute keine Zeit bekommen:
SELECT dateadd(day,datediff(day,0,GETDATE()),0)
keine Zeit yestersday erhalten:
SELECT dateadd(day,datediff(day,1,GETDATE()),0)
Abfrage für alle Zeilen aus nur gestern:
select
*
from yourTable
WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0)
AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)
Kann es jetzt nicht testen, aber:
select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)
den "heute" Wert in SQL zu erhalten:
convert(date, GETDATE())
Um "gestern" :
DATEADD(day, -1, convert(date, GETDATE()))
Um "heute minus X Tage" zu erhalten: ändern Sie die -1 in -X.
Also für alle Reihen von gestern, erhalten Sie:
select * from tablename
where date >= DATEADD(day, -1, convert(date, GETDATE()))
and date < convert(date, GETDATE())
„date“ Datentyp leider nicht in der SQL-Server existiert 2005. Wenn ich Datetime verwenden, anstatt die Zeit Wert bleibt und die Berechnung passiert nicht von 0 Uhr bis 12 Uhr, aber von der Zeit, die Sie die Abfrage ausführen – rudimenter
Mein Fehler. Ich habe nicht gesehen, dass Sie mit SQL Server 2005 gearbeitet haben. Tatsächlich funktioniert mein Code nur für SQL Server 2008. – Konamiman
Ich dachte immer, dass DATEADD (Tag, ....) eine Verschwendung wäre, addiere oder subtrahiere einfach die Anzahl der Tage gegen das Datum: _SELECT GETDATE() - 1_ –
Es ist ein wirklich alter Thread, aber hier ist meine Meinung dazu. Eher als 2 verschiedene Klauseln, eine größer als und kleiner als. Ich benutze diese Syntax unten für die Auswahl von Datensätzen von A-Datum. Wenn Sie einen Datumsbereich möchten, sind vorherige Antworten der richtige Weg.
SELECT * FROM TABLE_NAME WHERE
DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0
Im obigen Fall X wird -1 für Aufzeichnungen von gestern sein
SELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);
Ein anderer Weg, es zu sagen, "Yesterday" ...
Select * from TABLE
where Day(DateField) = (Day(GetDate())-1)
and Month(DateField) = (Month(GetDate()))
and Year(DateField) = (Year(getdate()))
denkbar Das wird nicht funktionieren gut am 1. Januar sowie am ersten Tag eines jeden Monats. Aber im Flug ist es effektiv.
Es scheint die offensichtliche Antwort fehlte. Um alle Daten aus einer Tabelle zu erhalten (Ttable), wobei die Säule (DatetimeColumn) ist ein Datetime mit einem Zeitstempel der folgende Abfrage verwendet werden kann:
SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday
Dies kann leicht bis heute, im letzten Monat geändert werden, im letzten Jahr,
usw.Dies sollte es tun:
WHERE `date` = CURDATE() - INTERVAL 1 DAY
In SQL Server wie folgt tun:
where cast(columnName as date) = cast(getdate() -1 as date)
Sie sollten beide Seiten des Ausdrucks auf den aktuellen Stand bringen, um Probleme mit der Zeitformatierung zu vermeiden.
Wenn Sie Intervall genauer steuern müssen, dann sollten Sie so etwas wie versuchen:
declare @start datetime = cast(getdate() - 1 as date)
declare @end datetime = cast(getdate() - 1 as date)
set @end = dateadd(second, 86399, @end)
- 1. R-Syntax zum Auswählen aller bis auf zwei erste Zeilen
- 2. Regex zum Auswählen aller Eingaben zwischen {und}
- 3. Auswählen aller Links
- 4. Hive-UDF zum Auswählen aller außer einigen Spalten
- 5. Vorhersage vom vorherigen Datum: Wertdaten
- 6. jQuery wenn sonst und ausgewählter Wert vom Tag auswählen
- 7. Maximaler Wert aller vorherigen Datumszeilen messen
- 8. Umgebungsvariable vom vorherigen Build abrufen
- 9. Auswählen und Verarbeiten aller Attribute in XSLT
- 10. Checkbox zum Auswählen/Entfernen aller Reihen in c3.js
- 11. XPath-Ausdruck zum Auswählen aller untergeordneten Knoten ohne Dekadenz Java
- 12. XPath zum Auswählen aller Elemente mit einem angegebenen Namen
- 13. jQuery Auswählen aller untergeordneten Kontrollkästchen
- 14. Schnellste Möglichkeit zum Vergleichen von Zeilen und vorherigen Zeilen im Pandas-Datenframe mit Millionen von Zeilen
- 15. Abrufen aller heute erstellten Zeilen
- 16. Auswählen aller benutzerdefinierten Tabellen in ORACLE
- 17. Die Größe aller vorherigen WordPress Bilder ändern
- 18. PHP- erhalten vorherigen Zeilen Wert
- 19. SELECT-Abfrage zum Auswählen von angemeldeten Benutzern Zeilen - PHP/MySQL
- 20. Zurück zum vorherigen (root) ViewController
- 21. Woche Anfang (Montag) für vorherigen Tag
- 22. Google Maps: Vorherigen Marker auf Polylinie auswählen
- 23. Jquery Auswählen des vorherigen Elements nach dem Klicken
- 24. So extrahieren Sie den vorherigen Tag-Text
- 25. 50 vorherige Zeilen auswählen
- 26. alle Zeilen auswählen
- 27. Firebird gespeicherte Prozedur zum Verketten aller Feldwerte aus mehreren Zeilen
- 28. Algorithmus zum Nullsetzen aller "schlechten" Spalten und Zeilen
- 29. Auswählen mehrerer Zeilen von JTable
- 30. Summe aller XML-Tag-Werte?
WENN ICH DIE ZEIT AUCH DANN MÖCHTE? – Neo
@ashuthinks, macht Ihren Kommentar für mich keinen Sinn. Die ursprüngliche Frage fragt, wie Zeilen vom vorherigen Tag abgerufen werden. Um das zu tun, müssen Sie nur das heutige Datum (keine Zeit) und das Datum von gestern (keine Zeit) haben. Sie verwenden diese (zeitlosen) Daten in der WHERE-Klausel. Die 'SELECT * 'gibt jedoch alle Daten mit ihren ursprünglichen Zeiten zurück. –
datediff gibt "Falsche Parameteranzahl Fehler". und http://stackoverflow.com/a/18926156/3007408 sagt datediff kann nur 2 Parameter verwenden. irgendeine Lösungsmöglichkeit?? – Sp0T