Antworten:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
DATETIME
, werden alle Datensätze vom vorherigen Datum ausgewählt, wobei der Zeitteil nicht berücksichtigt wird. Wurde ausgeführt 23:59:59
, gibt die Abfrage alle Datensätze der letzten 48
Stunden zurück, nicht 24
.
In MySQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - INTERVAL 1 DAY
In SQL Server
:
SELECT *
FROM mytable
WHERE record_date >= DATEADD(day, -1, GETDATE())
In Oracle
:
SELECT *
FROM mytable
WHERE record_date >= SYSDATE - 1
In PostgreSQL
:
SELECT *
FROM mytable
WHERE record_date >= NOW() - '1 day'::INTERVAL
In Redshift
:
SELECT *
FROM mytable
WHERE record_date >= GETDATE() - '1 day'::INTERVAL
In SQLite
:
SELECT *
FROM mytable
WHERE record_date >= datetime('now','-1 day')
In MS Access
:
SELECT *
FROM mytable
WHERE record_date >= (Now - 1)
function getdate() does not exist
. Ersetzte es durch current_date
und es funktionierte gut.
CURDATE()
kein Datum mit einem Zeitanteil zurückgegeben , also geht es zu 00
. Ich habe es behoben, indem ich NOW()
anstelle von verwendet habe CURDATE()
.
MySQL:
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
Das Intervall kann in JAHR, MONAT, TAG, STUNDE, MINUTE, ZWEIT sein
Zum Beispiel in den letzten 10 Minuten
SELECT *
FROM table_name
WHERE table_name.the_date > DATE_SUB(NOW(), INTERVAL 10 MINUTE)
Welches SQL nicht angegeben wurde, SQL 2005/2008
SELECT yourfields from yourTable WHERE yourfieldWithDate > dateadd(dd,-1,getdate())
Wenn Sie sich für Datumsarten mit erhöhter Genauigkeit von 2008 befinden, verwenden Sie stattdessen die neue Funktion sysdatetime (), ebenso wenn Sie UTC-Zeiten verwenden, die intern zu den UTC-Aufrufen wechseln.
Wenn der betrachtete Zeitstempel ein UNIX-Zeitstempel ist, müssen Sie zuerst den UNIX-Zeitstempel (z. B. 1462567865) in einen MySQL-Zeitstempel oder Daten konvertieren
SELECT * FROM `orders` WHERE FROM_UNIXTIME(order_ts) > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
SELECT DATEDIFF(s, '1970-01-01 00:00:00', DateField)
Wenn Sie in SQL Server 2016 und höher eine Millisekundengenauigkeit benötigen, verwenden Sie: SELECT DATEDIFF_BIG(millisecond, '1970-01-01 00:00:00', DateField)
select ...
from ...
where YourDateColumn >= getdate()-1
Hallo, ich habe jetzt viel Zeit vom ursprünglichen Beitrag vergangen, aber ich habe ein ähnliches Problem und möchte es teilen.
Ich habe ein Datum / Uhrzeit-Feld mit diesem Format JJJJ-MM-TT hh: mm: ss und möchte einen ganzen Tag darauf zugreifen. Hier ist meine Lösung.
Die Funktion DATE () in MySQL: Extrahieren Sie den Datumsteil eines Datums- oder Datums- / Uhrzeitausdrucks.
SELECT * FROM `your_table` WHERE DATE(`your_datatime_field`)='2017-10-09'
Damit bekomme ich das ganze Zeilenregister an diesem Tag.
Ich hoffe es hilft jemandem.
SELECT *
FROM tableName
WHERE datecolumn >= dateadd(hour,-24,getdate())
In SQL Server (für die letzten 24 Stunden):
SELECT *
FROM mytable
WHERE order_date > DateAdd(DAY, -1, GETDATE()) and order_date<=GETDATE()