2012-03-31 73 views
1

在我的SQL查詢中,如何查找過去24小時內的記錄? 我正在使用time()函數插入數據庫。 我使用時間戳的時間存儲在該format.Eg 1332673046在過去24小時內查找帶有時間字段的記錄

+0

可能重複的[MySQL:記錄插入小時,過去24小時](http://stackoverflow.com/questions/2783740/mysql-records-inserted-by-hour-for-the-last-24 -hours) – bernie 2012-03-31 08:02:58

+0

記錄是否包含任何時間戳記/日期時間列? – 2012-03-31 08:04:07

+0

@Shiplu是的,我正在使用時間戳。 – 2012-03-31 08:09:50

回答

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

當我在mysql中運行時它不工作,它說'MySQL返回了一個空的結果集(即零行)'。 – 2012-03-31 08:15:49

+0

零行不是錯誤。這意味着,沒有與條件匹配的行。如果所有行都超過24小時,或者表格爲空,則會發生這種情況。 – 2012-03-31 08:19:09

+0

但問題是我有30分鐘前輸入的行? – 2012-03-31 08:22:48

1

您可以使用BETWEEN

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

我不能肯定,如果你正在尋找同一日曆天之內檢查,或者你在過去的24小時內說,所以這裏就是我通常是兩種情況做:

一)同一日曆天:

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

b)對於日期爲過去24小時(含)

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

簡單的日期算術會做內,

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

既然你存儲日期爲Unix的時間戳,那麼你需要UNIX_TIMESTAMP這樣

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

你可能要考慮存儲MySQLs日期DATETIME格式因爲它使MySQL中的日期計算更容易。

相關問題