Я пытаюсь добавить секунды к дате, основанной на определенных событиях, которые происходят. Часто, если эти события происходят в одно и то же время, слишком много секунд добавляются. Вот как я сейчас это делаю в 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 секунд.
Кто-нибудь знает лучший способ сделать это?
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 секунд
EDIT NEW QUERY Этот запрос должен работать:
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()