Подтвердить что ты не робот

Добавление секунд в 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 секунд.

Кто-нибудь знает лучший способ сделать это?

4b9b3361

Ответ 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