我已經設置了一個時間戳字段,其中額外設置爲ON UPDATE CURRENT_TIMESTAMP。 它的工作原理,但我有一個問題:php:sql query(timestamp)
我想檢查所有比今天更早的記錄 - 我該怎麼做?
THX
我已經設置了一個時間戳字段,其中額外設置爲ON UPDATE CURRENT_TIMESTAMP。 它的工作原理,但我有一個問題:php:sql query(timestamp)
我想檢查所有比今天更早的記錄 - 我該怎麼做?
THX
你也可以使用DATE_SUB更容易
SELECT * FROM table WHERE timestamp_info < DATE_SUB(NOW(), INTERVAL 1 DAY);
+1這是好*最近24小時以上* – 2011-05-16 20:52:30
一個例子查詢比今天以上(午夜前)將是:
SELECT * FROM my_table WHERE timestamp_column < CURDATE();
退房的MySQL Date/Time Functions瞭解更多詳情。如果你想比過去的24小時年長,檢查出fafnirbcrow的答案
這是模棱兩可的,但我懷疑「比今天更早的記錄」可能意味着像「24小時之久」。 – 2011-05-16 20:11:37
這比現在要舊;今天不行。 – cbrandolino 2011-05-16 20:11:43
@cbrandolino,'CURDATE()'返回當前日期的午夜。在此之前的任何時間戳都會比今天更早*。儘管愛驅動器downvotes。 – 2011-05-16 20:16:24
SELECT *
FROM {your_table}
WHERE {time_stamp_field} < CURDATE()
或者,你可以做
SELECT *
FROM {your_table}
WHERE {time_stamp_field} <= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
所以,如果CURDATE()
回報2011-05-16,DATE_SUB(CURDATE(), INTERVAL 1 DAY)
評估爲2011 -05-15。
這是'CURDATE()'不CUR_DATE() – 2011-05-16 20:53:10
我假設,通過「比今天更舊」,你的意思是什麼,昨晚在midnigt之前插入。如果你的意思是24小時以前,讓我知道(並編輯你的問題)。
這裏就是你要做的:
$timestamp = strtotime('24.00 yesterday')
;$mysql_datetime = date('Y-m-d H:i:s', $timestamp)
;SELECT foo FROM bar WERE baz < $timestamp
。純MySQL解決方案更好數據庫位於單獨服務器上的事件。 – 2011-05-16 20:24:30
@jason你的意思是,不同的時間設置?因爲否則我不能看到任何問題。 – cbrandolino 2011-05-16 20:26:03
是的。通常MySQL和PHP的時間可能不同,甚至有不同的時區設置。特別是在不同的服務器上。如果用戶在MySQL中存儲日期(如「ON UPDATE」所示),那麼他們應該在MySQL中進行比較。 – 2011-05-16 20:28:50
比今天早或比24小時早? – slandau 2011-05-16 20:11:22