Formát PHP date() pri vkladaní do datetime v MySQL

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

Riešenie

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.

Komentáre (7)

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.

Komentáre (3)

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 |
+---------------------+
Komentáre (7)