2012-12-28 220 views
3

我有一個名爲「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 

讓我知道這是不清楚。

+0

時間戳是否是'TIMESTAMP'? –

+0

@WaleedKhan,是的。讓我編輯這個問題。 –

+0

我不得不同意JW給出的答案。它還允許您通過簡單地將查詢中的「CURDATE」更改爲您想要獲取數據的日期來獲取任何日期的信息。 (即CURDATE,或2012-11-23,或2012-12-24,或任何你想查詢的日期) –

回答

3

只是使用CURDATE()。例如

SELECT * 
FROM tableName 
WHERE DATE(s_timestamp) = CURDATE() 
+0

那麼,時間戳是「2012-12-27 11:45:40」...怎麼可以我從該時間戳中獲取curdate,然後運行查詢? –

+1

@SohelMansuri'WHERE DATE(s_timestamp)= CURDATE()' –

+0

謝謝,它工作。我會接受你的回答。 :) –

2

這可能比鑄造時間戳DATE更有效,特別是如果你對時間戳列(你應該有)的索引:

SELECT * 
FROM tableName 
WHERE s_timestamp >= CURDATE() 

或者,如果您想排除Ÿ未來日期:

SELECT * 
FROM tableName 
WHERE s_timestamp >= CURDATE() 
    AND s_timestamp < DATE_ADD(CURDATE(), INTERVAL 1 DAY) 

這樣做是因爲,當DATETIMETIMESTAMPDATE相比,該DATE,實際上,解釋爲具有的0:00:00時間部分。

+1

是的,'DATE'不使用索引。但條件'WHERE s_timestamp> = CURDATE()'將選擇從今天開始的所有日子並且大於它。 'WHERE s_timestamp BETWEEN CURDATE()和DATE_ADD(CURDATE(),INTERVAL 1 DAY)'將選擇今天和明天。 –

+0

@JW:[不,它沒有。](http://www.sqlize.com/2Q0kl2883m) –

+1

http://sqlfiddle.com/#!2/3e9d4/1 –

相關問題