Welches ist das richtige Format, das ich der Funktion date()
in PHP übergeben muss, wenn ich das Ergebnis in eine Spalte vom Typ MySQL datetime
einfügen möchte?
Ich habe date("Y-M-D G:i:s")
versucht, aber das fügt nur "0000-00-00 00:00:00" jedes Mal ein.
Das Problem ist, dass Sie 'M'
und 'D'
verwenden, die eine textuelle Darstellung sind, erwartet MySQL eine numerische Darstellung des Formats 2010-02-06 19:30:13
Versuchen Sie es: Date("Y-m-d H:i:s")`, das die numerischen Entsprechungen verwendet.
edit: habe G
in H
umgewandelt, auch wenn es keine Auswirkungen hat, Sie wollen wahrscheinlich das 24-Stunden-Format mit führenden 0en verwenden.
Aus den Kommentaren von php's [date()
manual page] (http://www.php.net/manual/en/function.date.php#85692):
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
Sie hatten das 'Y' richtig - das'ist ein volles Jahr, aber 'M' ist ein dreistelliger Monat, während 'm' ein zweistelliger Monat ist. Dasselbe gilt für 'D' anstelle von 'd'. 'G' ist eine ein- oder zweistellige Stunde, während 'H' bei Bedarf immer eine führende 0 hat.
Hier ist eine alternative Lösung: Wenn Sie das Datum in PHP als Zeitstempel haben, umgehen Sie die Bearbeitung mit PHP und lassen Sie die DB die Umwandlung mit der Funktion FROM_UNIXTIME
übernehmen.
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 |
+---------------------+