¿Cuál es el formato correcto para pasar a la función date()
en PHP si quiero insertar el resultado en una columna de tipo datetime
de MySQL?
He estado intentando con date("Y-M-D G:i:s")
pero eso sólo inserta "0000-00-00 00:00:00" cada vez.
El problema es que está utilizando "M" y "D", que son representaciones textuales, MySQL espera una representación numérica con el formato "2010-02-06 19:30:13".
Pruebe: date("Y-m-d H:i:s")
que utiliza los equivalentes numéricos.
edit: cambié G
por H
, aunque puede no tener impacto, probablemente quieras usar el formato de 24 horas con 0s a la izquierda.
De los comentarios de la página del manual de php's date()
:
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
Usted tenía el 'Y' correcta - que'es un año completo, pero 'M' es un mes de tres caracteres, mientras que 'm' es un mes de dos dígitos. Lo mismo ocurre con 'D' en lugar de 'd'. 'G' es una hora de 1 o 2 dígitos, mientras que 'H' siempre tiene un 0 inicial cuando es necesario.
Aquí'hay una solución alternativa: si tiene la fecha en PHP como una marca de tiempo, evite manejarla con PHP y deje que la BD se encargue de transformarla usando la función 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 |
+---------------------+