2009-08-25 12 views
25

Jak mogę zaktualizować tylko czas w istniejącym już polu DateTime w MySQL? Chcę, żeby data pozostała taka sama.Tylko aktualizacja Czas w mysql Pole DateTime

+0

próbowałem tego, ale bez powodzenia: UPDATE 'Wpis' SET entry_period_end_date = ADDTIME (entry_period_end_date, INTERVAL 6 Hour) WHERE TIME (entry_period_end_date) = '06: 00: 00 '; – Martin

Odpowiedz

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

Dla dokładnej składni funkcji, patrz this.

+1

Funkcja "ADDTIME" dodaje czas do istniejącego. Oznacza to, że aby to zadziałało, oczekuje się, że 'myDateTime' będzie zawierał tylko zestaw części daty (a porcja jest północna). – awe

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

Cóż, dokładnie to, o co prosisz, nie jest możliwe. Komponentów daty i czasu nie można aktualizować osobno, dlatego należy obliczyć nową wartość DateTime z istniejącej, aby można było zastąpić całą wartość.

+0

Cóż, można to zrobić, nie celując konkretnie w część czasu pola datetime, ale można zrobić coś, aby uzyskać pożądany wynik. – awe

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

udokumentowane na aktualnych funkcji MySQL MySQL docs

+1

USTAW data = DODAJ (DATA (data), '02: 00: 00.999998 ') Ustawia datę na "0000-00-00 00:00:" – NaturalBornCamper

10

Spróbuj tego:

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

Spróbuj tego:

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

Ta odpowiedź działa dokładnie tak, jak w reklamie. –

1

Spróbuj tego:

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

mam rozwiązany w ten sposób:

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

Oczywiście należy zmienić CURTIME() z żądanym czasie.

+0

Jest to bardzo pomocne, szukałem tego stwierdzenia przez jakiś czas w sieci. Dziękuję Ci ! – user1114409

0

Asuming masz pole pole Data i czas i chce wstrzyknąć czasu na dzień, spróbuj tego:

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