2013-03-09 58 views
0

我有一張表來存儲汽車租賃數據(預留等待響應)。這是一個名爲'initiate_datime'(INT,10)的字段,其中存儲了啓動的預留的datime(我已經知道INT 10不是最有效的方式,2038等)。unixtime(INT 10)檢查間隔中的存儲日期

我想查看預訂等待響應的進一步報告超過24小時......

對我來說,下面的示例工作

SELECT * FROM rentals WHERE rental_flag = 1 AND '".$cur_datetime_unixtime."' >(initiated_datime + 86400) ... WHERE $cur_datetime_unixtime is created in php 

SELECT * FROM rentals WHERE rental_flag = 1 AND unix_timestamp(now()) > (initiated_datime + 86400) 

有什麼用更高效的代碼更改(initiate_datime + 86400)的方法?如:unix_timestamp(initiate_datime + 1天的間隔)?

預先感謝您!

回答

0

不是在一般情況下;但在這種情況下,不平等相當於:

SELECT * FROM rentals WHERE rental_flag = 1 
AND unix_timestamp(now() - INTERVAL 1 DAY) > initiated_datime 
+0

謝謝你的回答......你能解釋一下你的答案? unix_timestamp(now() - INTERVAL 1 DAY)> initiate_datime等於initiate_datime + 1day> initiate_datime? – 2013-03-09 19:12:04

+0

您將當前時間戳與'initiate_datime'加上86400秒(== 1天)進行比較。這與直接將「當前時間戳1天前」與「initiate_datime」進行比較相同。 – fenway 2013-03-10 12:36:08

+0

謝謝!很棒! – 2013-03-10 21:16:45

0

解決此問題的最有效方法是將您的列更改爲datetime。你可以輕鬆使用date/time函數來操縱你的過濾器。

+0

真的......但將完成在未來 – 2013-03-09 18:14:03