2012-03-31 10 views
1

In meiner SQL-Abfrage wie finde ich Datensätze in den letzten 24 Stunden? Ich verwende time() -Funktion zum Einfügen in db. Ich bin mit Zeitstempel die Zeit in diesem format.Eg gespeichert 1332673046Finden Sie Datensätze mit einem Zeitfeld in den letzten 24 Stunden

+0

mögliche Duplikate von [MySQL: Datensätze nach Stunden eingefügt, für die letzten 24 Stunden] (http://stackoverflow.com/questions/2783740/mysql-records-inserted-by-hour-for-the-last-24 -hours) – bernie

+0

Enthält der Datensatz eine Timestamp-/Datetime-Spalte? –

+0

@Shiplu ja ich benutze Timestamp. –

Antwort

1
select somefield from yourtable where timefield >= subtime(current_timestamp(), '1 00:00:00'); 
+0

funktioniert nicht, wenn ich in mysql renne es sagt 'MySQL hat eine leere Ergebnismenge (d. H. Null Zeilen)' zurückgegeben. –

+0

null Zeilen ist kein Fehler. Es bedeutet nur, dass keine Zeilen mit der Bedingung übereinstimmen. Dies ist der Fall, wenn alle Zeilen älter als 24 Stunden sind oder wenn die Tabelle leer ist. –

+0

aber das Problem ist, dass ich Zeilen 30 Minuten zuvor eingegeben habe? –

1

Sie BETWEEN

SELECT * FROM users 
WHERE created_at BETWEEN '2012-03-31 00:00:00 UTC' AND '2012-03-31 23:59:59 UTC' 
können
1

Ich bin nicht sicher, wenn Sie innerhalb des gleichen Kalendertages zu überprüfen suchen oder wie Sie innerhalb der letzten 24 Stunden sagen, also hier, was ich in der Regel für beide Fälle tun:

a) für den gleichen Kalendertag:

CONVERT(VARCHAR(8), myTable.myDate, 112) = CONVERT(VARCHAR(8), GETDATE(), 112) 

b) Für das Datum innerhalb der letzten 24 Stunden (einschließlich) Arithmetik

DATEDIFF(hour, myTable.myDate, GETDATE()) <= 24 
1

Einfach DATE sein täte,

SELECT * 
FROM `table1` 
WHERE `time_col` BETWEEN NOW() AND NOW()- INTERVAL 24 HOURS; 
0

Vorausgesetzt, dass Sie Sie Termine als Unix-Zeitstempel dann speichern müssen UNIX_TIMESTAMP wie diese

SELECT 
    // fields you need 
FROM `table` 
WHERE 
    `date_field` BETWEEN UNIX_TIMESTAMP(DATE_SUB(NOW() INTERVAL 24 HOUR)) AND UNIX_TIMESTAMP() 

Sie könnten zu speichern Daten in MySQLs DATETIME Format betrachten wollen weil es Datumsberechnungen in MySQL viel einfacher macht.

Verwandte Themen