PHP data() formatas, kai įterpiama į "MySQL" datą ir laiką

Kokį formatą reikia perduoti PHP funkcijai date(), jei rezultatą noriu įterpti į MySQL datetime tipo stulpelį?

Bandžiau date("Y-M-D G:i:s"), bet tai visada įterpia tik "0000-00-00 00:00:00:00".

Sprendimas

Problema ta, kad naudojate 'M' ir 'D', kurie yra tekstiniai atvaizdai, o "MySQL" tikisi skaitmeninio atvaizdo formatu 2010-02-06 19:30:13.

Pabandykite: date("Y-m-d H:i:s"), kuriame naudojami skaitiniai atitikmenys.

redaguoti: G pakeista į H, nors tai gali neturėti įtakos, tikriausiai norite naudoti 24 valandų formatą su pradiniais 0.

Komentarai (7)

Iš php komentarų date() žinyno puslapio:

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

Jūs teisingai nurodėte 'Y' - tai yra visi metai, tačiau 'M' yra trijų ženklų mėnuo, o 'm' yra dviejų skaitmenų mėnuo. Ta pati problema su 'D' vietoj 'd'. 'G' yra 1 arba 2 skaitmenų valanda, o 'H' visada turi pradinį 0, kai reikia.

Komentarai (3)

Čia pateikiamas alternatyvus sprendimas: jei PHP programoje data pateikiama kaip laiko žyma, apeikite jos tvarkymą per PHP ir leiskite DB pasirūpinti jos transformavimu naudojant funkciją 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 |
+---------------------+
Komentarai (7)