簡體   English   中英

查找過去24小時內包含時間字段的記錄

[英]Find records with a time field in the last 24 hours

在我的SQL查詢中,如何在過去24小時內找到記錄? 我正在使用time()函數插入db。 我正在使用時間戳,時間以這種格式存儲.Eg 1332673046

你可以使用BETWEEN

SELECT * FROM users 
WHERE created_at  BETWEEN '2012-03-31 00:00:00 UTC' AND '2012-03-31 23:59:59 UTC'
select somefield from yourtable where timefield >= subtime(current_timestamp(), '1 00:00:00');

我不確定您是否希望在同一日歷日內查看,或者您在過去24小時內查看,所以這是我通常對這兩種情況所做的事情:

a)在同一日歷日:

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

b)日期在過去24小時內(含)

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

簡單的DATE算法會做,

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

鑒於您將日期存儲為unix時間戳,那么您需要像這樣的UNIX_TIMESTAMP

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

您可能需要考慮以MySQL DATETIME格式存儲日期,因為它使MySQL中的日期計算更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM