Добавление секунд в datetime в MySQL
Я пытаюсь добавить секунды к дате, основанной на определенных событиях, которые происходят. Часто, если эти события происходят в одно и то же время, слишком много секунд добавляются. Вот как я сейчас это делаю в 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 секунд или reset даты, где осталось всего 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()
Я думаю, что то, что вы хотите, в основном добавляет 15 секунд до end_dt, когда 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