2011-06-08 45 views
0

基本上這個查詢應該選擇在過去30分鐘內插入的所有字段,但它不會,它絕對選擇每行,使我的腳本輸出錯誤數據查詢選擇在過去30分鐘插入的所有字段實際上選擇每一行

SELECT count(*) FROM mytable 
WHERE `time` >= DATE_SUB(UTC_TIMESTAMP, INTERVAL 30 minute) 

時間字段存儲在這種格式的時間2011-06-08 22點32分03秒

查詢工作,但它選擇的每一行,而不是插入的那些最後30分鐘。

+0

什麼樣的數據類型是列「時間」? – davek 2011-06-08 19:48:01

+1

這應該不起作用。它應該輸出一個帶有計數的單行。這是你想要的行爲嗎?如果是這樣,你應該更新你的問題來反映這一點。 – rockerest 2011-06-08 19:48:18

+0

這是時間戳。 – dikidera 2011-06-08 19:48:43

回答

2

添加括號來查詢 - UTC_TIMESTAMP()或使用NOW() - 很簡單的我。

3

嘗試

SELECT count(*) FROM mytable 
WHERE `time` >= DATE_SUB(NOW(), INTERVAL 30 minute) 
+0

這告訴我時間列不是UTC,這意味着他得到UTC和當地時間之間的時差。 – Dave 2011-06-08 20:21:00

+0

你的權利,考慮到他的例子,我認爲它使用的是標準的日期時間字段。他應該按照@Dave和@Tomasz Kowalczyk的建議使用UTC_TIMESTAMP()。 – 2011-06-08 20:25:04