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".
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.
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.
Č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 |
+---------------------+