我有一個名爲「s_timestamp」的列。時間戳間隔
如何返回時間戳中當前日期的所有記錄?
例如,
s_timestamp
2012-12-27 1:00:00
2012-12-27 2:00:00
2012-12-26 0:00:01
2012-12-20 0:00:02
2012-12-21 0:00:03
我想下面的輸出:
2012-12-27 1:00:00
2012-12-27 2:00:00
讓我知道這是不清楚。
我有一個名爲「s_timestamp」的列。時間戳間隔
如何返回時間戳中當前日期的所有記錄?
例如,
s_timestamp
2012-12-27 1:00:00
2012-12-27 2:00:00
2012-12-26 0:00:01
2012-12-20 0:00:02
2012-12-21 0:00:03
我想下面的輸出:
2012-12-27 1:00:00
2012-12-27 2:00:00
讓我知道這是不清楚。
這可能比鑄造時間戳DATE
更有效,特別是如果你對時間戳列(你應該有)的索引:
SELECT *
FROM tableName
WHERE s_timestamp >= CURDATE()
或者,如果您想排除Ÿ未來日期:
SELECT *
FROM tableName
WHERE s_timestamp >= CURDATE()
AND s_timestamp < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
這樣做是因爲,當DATETIME
或TIMESTAMP
與DATE
相比,該DATE
,實際上,解釋爲具有的0:00:00
時間部分。
是的,'DATE'不使用索引。但條件'WHERE s_timestamp> = CURDATE()'將選擇從今天開始的所有日子並且大於它。 'WHERE s_timestamp BETWEEN CURDATE()和DATE_ADD(CURDATE(),INTERVAL 1 DAY)'將選擇今天和明天。 –
@JW:[不,它沒有。](http://www.sqlize.com/2Q0kl2883m) –
http://sqlfiddle.com/#!2/3e9d4/1 –
時間戳是否是'TIMESTAMP'? –
@WaleedKhan,是的。讓我編輯這個問題。 –
我不得不同意JW給出的答案。它還允許您通過簡單地將查詢中的「CURDATE」更改爲您想要獲取數據的日期來獲取任何日期的信息。 (即CURDATE,或2012-11-23,或2012-12-24,或任何你想查詢的日期) –