web-dev-qa-db-fra.com

Convertir le datetime MySQL en horodatage

J'essaie de convertir datetime en horodatage mais mysql me donne des avertissements et les valeurs converties sont fausses. Voici la requête SQL

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;

Avertissements

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

Résultat

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

J'ai également essayé de suivre la requête mais elle montre 0000-00-00 00:00:00 dans le champ d'horodatage.

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

Essayez ceci s'il vous plaît:

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

Référence . Il semble que vous ayez un problème avec la façon dont vous formatez le tampon de date. Veuillez également consulter cet article: Dois-je utiliser le champ 'datetime' ou 'timestamp'?

17
bonCodigo

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'); suffit pour convertir un datetime mysql en un horodatage.

19
Omar S.

Sur MySQL 5.5, cela fonctionne bien:

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

avec datetime_col de tapez DATETIME et timestamp_col de tapez TIMESTAMP .

C'est-à-dire: pas besoin de conversion de type explicite.

3
Andrea

Vous utilisez '%M %d %Y %h:%i%p' comme format de date, mais l'avertissement affiche une chaîne de date '2011-06-11 20:29:02', qui ne correspond pas à ce format. C'est-à-dire que l'année est la première et l'heure est au format 24 heures.

Vous pouvez utiliser '%Y-%M-%d %T' à la place, ce format correspondrait aux données.

En savoir plus sur les codes de format de date ici: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

1
Bill Karwin