我在mysql中有一个datetime字段(endTime)。我使用gmdate()来填充此endTime字段。
存储的值类似于2009-09-17 04:10:48。我希望在此结束时间内添加30分钟,并将其与当前时间进行比较。 ie)允许用户在他的endTime内只做30分钟的某个任务。在他的结束时间30分钟后,我不应该让他做任务。
我怎么能在PHP中做到这一点?
我正在使用gmdate来确保没有区域差异。
提前致谢
答案 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