在 MySQL 中向日期时间添加秒数

2022-08-30 17:04:33

我正在尝试根据发生的某些事件向日期添加秒数。通常,如果这些事件同时发生,则会添加太多秒数。以下是我目前在PHP和MySQL中的做法

$time_add_on = 15 - $seconds_left;
DATE_ADD(STR_TO_DATE(end_dt,'%Y-%m-%d %H:%i:%s'), INTERVAL '".$time_add_on."' SECOND

它所做的是将当前秒数从“end_dt”减去15并将其添加到“end_dt”中,基本上还剩下15秒。

这里的目标基本上是添加15秒或将日期重置为仅剩15秒的位置。这会导致问题,而不是重置为剩余 15 秒,而是添加 30 秒或 45 秒。

有谁知道最好的方法来做到这一点吗?


答案 1
UPDATE table end_dt = DATE_ADD(end_dt, INTERVAL 15 second)
WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW()

我认为这就是你想要的,基本上在end_dt增加15秒,而end_dt距离现在只有15秒。

编辑新查询 此查询应该有效:

UPDATE `table`
    SET end_dt = DATE_ADD(end_dt, INTERVAL (15 - TIMESTAMPDIFF(SECOND, NOW(), end_dt)) SECOND)
WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW()

答案 2
TIMESTAMPADD(SECOND,15,NOW())

单位 = 添加秒数 = 15


推荐