添加30分钟到datetime php / mysql

时间:2009-09-17 05:26:17

标签: php mysql datetime strtotime

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

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

我怎么能在PHP中做到这一点?

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

提前致谢

6 个答案:

答案 0 :(得分:114)

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

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


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

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

答案 1 :(得分:46)

试试这个

DATE_ADD(datefield, INTERVAL 30 MINUTE)

答案 2 :(得分: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')

答案 3 :(得分:5)

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

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

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

答案 4 :(得分:3)

使用DATE_ADD函数

DATE_ADD(datecolumn, INTERVAL 30 MINUTE);

答案 5 :(得分:0)

通过添加 30 分钟从 MySQL 表中获取日期

SELECT loginDate, date_add(loginDate,interval 30 minute) as newLoginDate 
FROM `tableName`;

结果如下

Login Date - 2020-07-22 14:00:00
New Login Date - 2020-07-22 14:30:00