2012-12-23 15 views
21

Próbuję przekonwertować datetime na sygnaturę czasową, ale mysql daje mi ostrzeżenia, a także przekonwertowane wartości są błędne. Oto zapytań SQLKonwertuj datetime MySQL na sygnaturę czasową

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(STR_TO_DATE(A.date_added, '%M %d %Y %h:%i%p')) WHERE A.id=B.id; 

Ostrzeżenia

+---------+------+--------------------------------------------------------------------------+ 
| Level | Code | Message                 | 
+---------+------+--------------------------------------------------------------------------+ 
| Warning | 1411 | Incorrect datetime value: '2011-06-11 20:29:02' for function str_to_date | 
+---------+------+--------------------------------------------------------------------------+ 

rezultatu

+---------------------+---------------------+ 
| date_added   | date_added   | 
+---------------------+---------------------+ 
| 2012-02-23 06:12:45 | 2012-12-23 19:08:33 | 
+---------------------+---------------------+ 

Próbowałem również następujące zapytanie ale pokazuje 0000-00-00 00:00:00 w znacznik czasu.

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id; 

Odpowiedz

13

Spróbuj to proszę:

UPDATE table1 A, table2 B 
SET B.date_added = FROM_UNIXTIME(A.date_added) 
WHERE A.id=B.id 

Reference. Wygląda na to, że masz problem ze sposobem formatowania daty stammp. Także proszę zajrzeć do tego postu: Should I use field 'datetime' or 'timestamp'?

+0

Próbowałem, że dobrze, ale dlaczego nie ma czasu tabeli 'diff 2012-02-23 06: 12: 45' tabela B' 23.12.2012 21: 01: 57' – Maximus

+0

Istnieją pewne dziwne rzeczy z strefy czasowe i FROM_UNIXTIME, patrz http://stackoverflow.com/a/17128732/20774 dla wyjaśnienia –

15

UPDATE table1 A, table2 B SET B.date_added=UNIX_TIMESTAMP(A.date_added) WHERE A.id=B.id;

UNIX_TIMESTAMP('2015-01-15 12:00:00'); wystarczy przekonwertować datetime mysql do datownika.

1

Na MySQL 5.5 to działa prawidłowo:

UPDATE `some_table` 
SET `timestamp_col` = `datetime_col` 

z datetime_col z type DATETIME i timestamp_col z type TIMESTAMP.

To znaczy: brak potrzeb konwersji typu jawnego.

Powiązane problemy