2012-07-16 98 views
1

我想篩選NOW()和NOW之間的間隔10分鐘(?)之間的SELECT查詢,但我似乎無法得到此工作,並且它是給了我關於這個話題的幾個問題。使用WHERE子句中兩個日期之間的差異

我已經瀏覽了一些在線文檔,以及很多關於stackoverflow的問題,但非解決方案給了我我需要的東西。查看TIMEDIFF和TIMESTAMPDIFF文檔,我只看到它像這樣使用;

SELECT TIMESTAMPDIFF(SECOND,'2007-12-30 12:01:01','2007-12-31 10:02:00'); 

但是,我不想只是選擇時差,我想在查詢中使用它作爲WHERE子句,就像;

SELECT * FROM tableName WHERE (the time difference betweeen NOW() and the stored timestamp is less than x minutes); 

是否有我需要設置我的列的特定數據類型? 如何正確使用TIMEDIFF/TIMESTAMPDIFF,如果這些不是我應該使用的正確方法,那是什麼?

+0

所以,從本質上講,你要知道,如果一個日期之間的其他兩個日期? – Jodrell 2012-07-16 09:57:18

+0

在你的第一個例子中,你正在按照錯誤的順序指定'BETWEEN'的條款(應該是'BETWEEN最小和最大',你確定那不是問題嗎? – fvu 2012-07-16 09:58:07

+0

這僅僅是我從某處取得的一個例子,但現在的答案已經解決了我的問題,我應該知道這將會是一件非常簡單的事情! – 2012-07-16 10:00:00

回答

4
SELECT * FROM tableName WHERE TIMESTAMPDIFF(MINUTE,timestamp,NOW()) < 10 
+0

,因此答案似乎如此簡單::)謝謝。 – 2012-07-16 09:59:22

+0

+1表示存儲的時間戳小於x分鐘*。 – 2012-07-16 09:59:59

2
SELECT * FROM tableName 
WHERE now() - interval 10 minute < stored_timestamp 
+0

+1爲了保持查詢的可靠性,並且不將時間戳列包裝在函數中進行比較。 – 2012-07-16 09:59:08

+0

@ZaneBien我不確定,但我認爲,對於某些可被挑剔的事物,左邊的一部分條件不應該是一個表達。 – 2012-07-16 10:06:29

+0

我注意到,然而(有點偏離問題),mysql中的時間戳以「year:month:day hour:minute:second」的形式存儲,但C#的datetime.now()輸入到表單中的數據庫「日:月:年小時:分:秒」在SQL中有更改時間戳格式的方法嗎? – 2012-07-16 10:07:58