Quel est le format correct à passer à la fonction date()
en PHP si je veux insérer le résultat dans une colonne MySQL de type datetime
?
J'ai essayé d'utiliser la fonction date("Y-M-D G:i:s" ;)
mais cela ne fait qu'insérer "0000-00-00 00:00:00" ; à chaque fois.
Le problème est que vous utilisez " M " et " D ", qui sont des représentations textuelles, alors que MySQL attend une représentation numérique du format " 2010-02-06 19:30:13 ".
Essayez : date("Y-m-d H:i:s" ;)
qui utilise les équivalents numériques.
edit : switched G
to H
, though it may not have impact, you probably want to use 24-hour format with leading 0s.
Extrait des commentaires de la [page de manuel date()
] de php (http://www.php.net/manual/en/function.date.php#85692) :
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
Vous aviez le 'Y' ; correct - c'est une année complète, mais le 'M' ; est un mois à trois caractères, alors que le 'm' ; est un mois à deux chiffres. Même problème avec 'D' ; au lieu de 'd' ;. 'G' ; est une heure à 1 ou 2 chiffres, alors que 'H' ; a toujours un 0 en tête lorsque cela est nécessaire.
Voici une solution alternative : si vous avez la date en PHP sous forme d'horodatage, évitez de la manipuler avec PHP et laissez la base de données se charger de la transformer en utilisant la fonction FROM_UNIXTIME
.
mysql> insert into a_table values(FROM_UNIXTIME(1231634282));
Query OK, 1 row affected (0.00 sec)
mysql> select * from a_table;
+---------------------+
| a_date |
+---------------------+
| 2009-01-10 18:38:02 |
+---------------------+