2012-08-07 76 views
1

看起來像這應該是一件簡單的事情,但postgresql中的日期/時間操作正在殺死我。我所要做的就是搜索超過10分鐘的物品。編碼語言是PHP。Postgresql搜索超過閾值的項目

event_time是:沒有NOT NULL

$sql = "SELECT * FROM incidents WHERE 
     event_time < (now() - interval '-{$threshold} minutes') 
     AND submitted=0 "; 

此查詢返回的所有結果,而不是超過10分鐘的項目時區的時間戳。我是否需要以某種方式輸入該event_time字段?

+0

你能告訴我們真實的聲明是什麼嗎?門檻值之前的破折號是什麼?在普通的SQL中,它應該是'now() - interval'10'minute'或'now - interval'10 minutes''(注意:在10之前沒有破折號) – 2012-08-07 21:46:49

回答

3

通過使用負閾值,您有雙重否定,因此您正在搜索未來不到10分鐘的所有內容(這將自然而然地返回所有內容)。只需使用interval '{$threshold} minutes}'

+0

另一種選擇是:'event_time - now()>間隔'10'分鐘(我個人發現更可讀) – 2012-08-07 21:50:03

+0

是的,這似乎是它。我是一個白癡。謝謝你,先生! ;) – 2012-08-07 21:51:41

+0

@MichaelGuthrie如果這解決了你的問題,你應該接受這個答案,因爲它會建立你的聲譽,並使人們更願意回答你將來的問題。 – 2012-08-07 21:54:13