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?
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