PHP date() formaat bij invoegen in datetime in MySQL

Wat is het juiste formaat om door te geven aan de date() functie in PHP als ik het resultaat wil invoegen in een MySQL datetime type kolom?

Ik heb geprobeerd datum("J-M-D G:i:s") maar dat is gewoon voegt "0000-00-00 00:00:00" elke keer.

Oplossing

Het probleem is dat u 'M' en 'D' gebruikt, die een tekstuele weergave zijn, MySQL verwacht een numerieke weergave van het formaat 2010-02-06 19:30:13.

Probeer: date("Y-m-d H:i:s") die de numerieke equivalenten gebruikt.

edit: verwisselde G voor H, hoewel het misschien geen effect heeft, wil je waarschijnlijk het 24-uurs formaat gebruiken met voorloop 0s.

Commentaren (7)

Uit de commentaren van php's date() manual page:

<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>

Je had de 'Y' correct - dat'is een volledig jaar, maar 'M' is een maand van drie tekens, terwijl 'm' een maand van twee cijfers is. Hetzelfde probleem met 'D' in plaats van 'd'. 'G' is een 1 of 2 cijferig uur, terwijl 'H' altijd een voorloop 0 heeft wanneer dat nodig is.

Commentaren (3)

Hier's een alternatieve oplossing: als je de datum in PHP als een timestamp hebt, omzeil het behandelen met PHP en laat de DB zorgen voor het transformeren door gebruik te maken van de FROM_UNIXTIME functie.

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 |
+---------------------+
Commentaren (7)