Agregar segundos a datetime en MySQL

1 minuto de lectura

Estoy tratando de agregar segundos a una fecha en función de ciertos eventos que ocurren. A menudo, si estos eventos ocurren al mismo tiempo, se agregan demasiados segundos. Así es como lo estoy haciendo actualmente en PHP y 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

Lo que esto está haciendo es tomar los segundos actuales que quedan de ‘end_dt’, restar 15 y sumarlos a ‘end_dt’, básicamente dándote 15 segundos restantes.

El objetivo aquí es básicamente agregar 15 segundos o restablecer la fecha donde solo quedan 15 segundos. Esto está causando problemas, donde en lugar de restablecerse a 15 segundos restantes, agregará 30 segundos o 45 segundos.

¿Alguien sabría la mejor manera de hacer esto?

avatar de usuario
logan bailey

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

Creo que eso es lo que quieres, básicamente agrega 15 segundos a end_dt cuando end_dt está a 15 segundos de ahora

EDITAR NUEVA CONSULTA Esta consulta debería funcionar:

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()

  • Hola Logan, entonces esto no funcionaría porque si quedan 10 segundos y sumas 15, quedarían 25 segundos.

    – dzm

    4 de noviembre de 2010 a las 15:16

TIMESTAMPADD(SECOND,15,NOW())

unidad = SEGUNDO segundos para sumar = 15

  • ¿Qué hay de sumar segundos con decimales? Por ejemplo, en una base de datos de Limesurvey, todos los tiempos se dan en segundos con decimales: 765,97. ¿O hay alguna forma de redondear el tiempo de esos decimales en MySQL?

    – Patros

    29 de abril de 2020 a las 20:08

¿Ha sido útil esta solución?