2009-08-25 88 views
25

¿Cómo puedo actualizar solo la hora en un campo DateTime ya existente en MySQL? Quiero que la fecha permanezca igual.Actualizar solo la hora en un campo mysql DateTime

+0

yo probamos este, pero sin suerte: ACTUALIZACIÓN 'Entry' SET entry_period_end_date = ADDTIME (entry_period_end_date, INTERVAL 6 Hour) WHERE TIME (entry_period_end_date) = '06: 00: 00 '; – Martin

Respuesta

1
UPDATE myTable 
SET myDateTime = ADDTIME(myDateTime, @myTimeSpan) 
WHERE id = @id; 

Para conocer la sintaxis exacta de la función, consulte this.

+1

La función 'ADDTIME' agrega un tiempo al existente. Esto significa que para que esto funcione, espera que 'myDateTime' tenga solo la porción de fecha establecida (y la porción de tiempo es de medianoche). – awe

0
UPDATE `table` 
SET time = ADDTIME(time, INTERVAL 13 Hour); 
0

Bueno, exactamente lo que está pidiendo no es posible. Los componentes de fecha y hora no pueden actualizarse por separado, por lo que debe calcular el nuevo valor de DateTime a partir del existente para que pueda reemplazar el valor completo.

+0

Bueno, es posible hacerlo, no apuntando específicamente a la porción de tiempo del campo de fecha y hora, pero puede hacer algo para obtener el resultado deseado. – awe

2
UPDATE myTable 
SET myDateTime = ADDTIME(DATE(myDateTime), @myTimeSpan) 
WHERE id = @id; 

documentadas en funciones de fecha MySQL MySQL docs

+1

SET date = ADDTIME (FECHA (fecha), '02: 00: 00.999998 ') Establece la fecha en' 0000-00-00 00:00: ' – NaturalBornCamper

10

Prueba esto:

UPDATE t1 SET DateTimeField = CONCAT(DATE(DateTimeField),' 12:34:56'); 
39

Prueba esto:

UPDATE yourtable SET yourcolumn=concat(date(yourcolumn), ' 21:00:00') WHERE Id=yourid; 
+1

Esta respuesta funciona exactamente como se anuncia. –

1

Prueba esto:

UPDATE sms 
SET entry_period_end_date= entry_period_end_date+INTERVAL 6 Hour 
WHERE TIME(entry_period_end_date) = '06:00:00'; 
4

me han resuelto de esta manera:

UPDATE table 
SET myDateTime = CONCAT_WS(' ',DATE(myDateTime), CURTIME()) 
WHERE id = @id; 

Obviamente se debe cambiar CURTIME() con un tiempo de desconexión.

+0

Esto es muy útil, estaba buscando esta declaración por algún tiempo en la red. Gracias ! – user1114409

0

página MySQL DEV muestra funciones como subtime y difftime

Un código de ejemplo para respaldar el tiempo de todos los mensajes en 3 horas es de arriba:

UPDATE tablepost SET datepost = SUBTIME(datepost , '0 3:0:0'); 

Nótese que los valores 0 dont alterar el campo respectivo. Tenga cuidado con este código, use seleccionar primero para probar estas funciones.

Referencia: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_subtime

0

Asumiendo que tiene un campo campo de fecha y hora y desea inyectar el tiempo en el día, intente esto:

UPDATE mytable 
SET mydatefield = ADDTIME(DATE_FORMAT(mydatefield,'%Y-%m-%d 00:00:00'), mydatefield) 
WHERE myid = ... 
Cuestiones relacionadas