2013-02-18 46 views
-5

我將如何從最後一個小時選擇。例如,如果是3點半,我將如何從3點鐘時間選擇?我知道如何從查詢運行的最後一小時開始,但我不知道如何執行此操作。MySQL從過去的時鐘小時選擇

+0

在php或mysql和數據來自哪裏(變量,表列)? – jeroen 2013-02-18 20:25:42

+0

http://bit.ly/Xoih8f ---第一個。你甚至試過嗎?...... – Nick 2013-02-18 20:26:32

+0

whathaveyoutried.com? – 2013-02-18 20:26:56

回答

1

爲了獲得最佳性能,你想在裸列謂語,而不是包裹在功能列引用(如在選擇的答案)。

要限制的行返回到僅那些在當前時鐘小時mydatetimecol值:

WHERE mydatetimecol >= DATE_FORMAT(NOW(),'%Y-%m-%d %H:00:00') 

在右側的表達式是當前日期時間值向下舍入到小時。 (在這個例子中,這是通過將當前日期時間用分鐘和秒部分的零格式化來完成的,但這不是唯一的方法,但這種方法比其他一些方法更容易閱讀。)

請注意,不需要將列引用包裝在函數中。在謂詞中使用對mydatetimecol的裸列引用可使MySQL使用mydatetimecol上的索引範圍掃描。

3

WHERE條款試試這個:

WHERE DATE(columnname) = DATE(CURRENT_TIMESTAMP) 
    AND HOUR(columnname) = HOUR(CURRENT_TIMESTAMP) 

參考

+0

所以如果帶時間戳的列被稱爲'TS',它應該看起來像:WHERE HOUR(TS)= HOUR(CURRENT_TIMESTAMP)? – austinhollis 2013-02-18 20:31:47

+0

是的,這將是正確的 – 2013-02-18 20:34:40

+0

我從這個小時得到結果,但返回了不同的日期。我怎麼能解決這個問題? – austinhollis 2013-02-18 20:35:28

0

這是約翰·孔德的答案的變化。它可能運行得更快,因爲它不在where子句中使用函數。語法可能不正確,因爲我不使用mysql,而是使用google來查找語法。

where yourdatetimefield >= timestampadd(minute, 
, -minute(current_timestamp), current_timestamp)