2009-09-17 45 views
41

我有一個日期時間字段(endTime)在MySQL中。我使用gmdate()來填充endTime字段。添加30分鐘datetime php/mysql

存儲的值類似於2009-09-17 04:10:48。我想在此結束時間添加30分鐘,並將其與當前時間進行比較。即)用戶被允許在他的結束時間內僅30分鐘完成某個任務。結束30分鐘後,我不應該讓他做任務。

我該怎麼做,在PHP?

我使用gmdate來確保沒有區域差異。

在此先感謝

回答

96

如果您正在使用MySQL你可以做這樣的:

SELECT '2008-12-31 23:59:59' + INTERVAL 30 MINUTE; 


對於純PHP解決方案使用strtotime

strtotime('+ 30 minute',$yourdate); 
+6

,MySQL的訣竅是真棒。從來不知道那個。 – jocull 2010-11-15 22:11:13

5

MySQL有一個功能稱爲ADDTIME加在一起兩次 - 所以你可以在MySQL中做整個事情(公關願意使用> = MySQL 4.1.3)。

喜歡的東西(未經測試):

SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT') 
+0

我來這裏尋找一種通用的方法來添加到日期時間變量,只有這個答案適合我。 – kurast 2013-04-09 14:36:59

42

試試這個

DATE_ADD(datefield, INTERVAL 30 MINUTE) 
5

Dominc看法是正確的,但把計算上表達的另一邊。

SELECT * FROM my_table WHERE endTime < DATE_SUB(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'), INTERVAL 30 MINUTE) 

這樣做的好處是,您只需進行一次30分鐘的計算而不是每一行。這也意味着MySQL可以使用該列上的索引。這兩個都會讓你加速。

2

使用DATE_ADD功能

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);