Qual é o formato correto para passar para a função date()
no PHP se eu quiser inserir o resultado em uma coluna tipo MySQL datetime
?
I'tenho tentado date("Y-M-D G:i:s")
mas isso só insere "0000-00-00 00:00:00" todas as vezes.
O problema é que você're utilizando 'M'
e 'D'
, que são representações textuais, o MySQL está esperando uma representação numérica do formato 2010-02-06 19:30:13
.
Tente: date("Y-m-d H:i:s")
que utiliza os equivalentes numéricos.
edit: mudou G
para H
, embora possa não ter impacto, você provavelmente quer utilizar o formato de 24 horas com 0s de chumbo.
A partir dos comentários de php's date()
página do manual:
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
Você teve o 'Y' correto - isso'é um ano inteiro, mas 'M' é um mês de três caracteres, enquanto 'm' é um mês de dois dígitos. O mesmo problema com 'D' em vez de 'd'. 'G' é uma hora de 1 ou 2 dígitos, onde 'H' tem sempre um 0 inicial quando necessário.
Aqui's uma solução alternativa: se você tem a data no PHP como um carimbo de data, contorne o manuseio com o PHP e deixe a DB cuidar de transformá-lo utilizando a função 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 |
+---------------------+