我在mysql中有一个日期时间字段(endTime)。我使用 gmdate() 来填充这个 endTime 字段。
存储的值类似于 2009-09-17 04:10:48。我想将此结束时间添加 30 分钟并将其与当前时间进行比较。即)允许用户在其结束时间仅 30 分钟内完成某项任务。在他的结束时间 30 分钟后,我不应该让他做任务。
我怎么能在 php 中做到这一点?
我正在使用 gmdate 来确保没有区域差异。
提前致谢
试试这个
DATE_ADD(datefield, INTERVAL 30 MINUTE)
MySQL 有一个函数要求ADDTIME
将两次相加 - 因此您可以在 MySQL 中完成所有操作(前提是您使用 >= MySQL 4.1.3)。
类似(未经测试):
SELECT * FROM my_table WHERE ADDTIME(endTime + '0:30:00') < CONVERT_TZ(NOW(), @@global.time_zone, 'GMT')
Dominc 的想法是正确的,但将计算放在表达式的另一端。
SELECT * FROM my_table WHERE endTime < DATE_SUB(CONVERT_TZ(NOW(), @@global.time_zone, 'GMT'), INTERVAL 30 MINUTE)
这样做的好处是您只进行一次 30 分钟计算,而不是对每一行进行一次计算。这也意味着 MySQL 可以使用该列上的索引。这两个都给你一个加速。
使用 DATE_ADD 函数
DATE_ADD(datecolumn, INTERVAL 30 MINUTE);
通过添加 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