2010-10-29 19 views
12

Estoy tratando de agregar segundos a una fecha basada en ciertos eventos que ocurren. Muchas veces, si estos eventos ocurren al mismo tiempo, se agregan demasiados segundos. Así es como yo estoy actualmente hacerlo en PHP y MySQLAgregar segundos a datetime en 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 hace es tomar los segundos actuales izquierda de la 'end_dt' restando 15 y agregarlo a la 'end_dt', básicamente le da 15 segundos para el final .

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

¿Alguien sabe la mejor manera de hacerlo?

Respuesta

22
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 quiere, básicamente añade 15 segundos a end_dt cuando end_dt es de 15 segundos de distancia a partir 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() 
+0

Hey Logan, así que esto no funcionaría porque si quedan 10 segundos, y agregas 15, eso te quedaría en 25 segundos. – dzm

Cuestiones relacionadas