Aký je správny formát, ktorý sa má odovzdať funkcii date()
v PHP, ak chcem výsledok vložiť do stĺpca MySQL typu datetime
?
Skúšal som date("Y-M-D G:i:s")
, ale to vždy vloží len "0000-00-00 00:00:00".
Problém je v tom, že používate 'M'
a 'D'
, čo sú textové reprezentácie, MySQL očakáva číselnú reprezentáciu vo formáte 2010-02-06 19:30:13
.
Skúste: date("Y-m-d H:i:s")
, ktorý používa číselné ekvivalenty.
edit: zmenil som G
na H
, aj keď to nemusí mať vplyv, pravdepodobne chcete použiť 24-hodinový formát s úvodnými 0.
Z komentárov php's date()
manuál stránky:
<?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
Správne ste uviedli 'Y' - je to celý rok, ale 'M' je trojmiestny mesiac, zatiaľ čo 'm' je dvojmiestny mesiac. Rovnaký problém je aj s 'D' namiesto 'd'. 'G' je jedno- alebo dvojmiestna hodina, pričom 'H' má v prípade potreby vždy úvodnú 0.
Tu je alternatívne riešenie: ak máte dátum v PHP ako časovú značku, obíďte jeho spracovanie pomocou PHP a nechajte DB, aby sa postarala o jeho transformáciu pomocou funkcie 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 |
+---------------------+