添加30分钟到datetime php/mysql

som*_*aac 48 php mysql datetime strtotime

我在mysql中有一个datetime字段(endTime).我使用gmdate()来填充此endTime字段.

存储的值类似于2009-09-17 04:10:48.我希望在此结束时间内添加30分钟,并将其与当前时间进行比较.ie)允许用户在他的endTime内只做30分钟的某个任务.在他的结束时间30分钟后,我不应该让他做任务.

我怎么能在PHP中这样做?

我正在使用gmdate来确保没有区域差异.

提前致谢

Rag*_*geZ 115

如果你使用MySQL,你可以这样做:

SELECT '2008-12-31 23:59:59' + INTERVAL 30 MINUTE;
Run Code Online (Sandbox Code Playgroud)


对于纯PHP解决方案,请使用strtotime

strtotime('+ 30 minute',$yourdate);
Run Code Online (Sandbox Code Playgroud)

  • 那个MySQL技巧真棒.从来不知道那个. (6认同)

Cem*_*ncu 46

试试这个吧

DATE_ADD(datefield, INTERVAL 30 MINUTE)
Run Code Online (Sandbox Code Playgroud)


Dom*_*ger 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')
Run Code Online (Sandbox Code Playgroud)


sta*_*san 5

Dominc有正确的想法,但把计算放​​在表达式的另一边.

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

这样做的好处是,您只需要进行30分钟的计算,而不是每行进行30分钟的计算.这也意味着MySQL可以使用该列的索引.这两个都给你一个加速.


小智 5

使用 DATE_ADD 函数

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);
Run Code Online (Sandbox Code Playgroud)