Portál AbcLinuxu, 13. května 2025 20:10
Now()
.
Možná by tě zajímal rozdíl:
SELECT NOW(), SLEEP(3), NOW();vs.
SELECT SYSDATE(), SLEEP(3), SYSDATE();
$sql = "INSERT INTO t (a, b, c, d) VALUES (:a, :b, :c, :d)"; $query = $this->db->prepare($sql); $parameters = array(':a' => $a, ':b' => $b, ':c' => $c, ':d' => NOW());
$sql = "INSERT INTO t (a, b, c, d) VALUES (:a, :b, :c, NOW())";?
Jenda ti už něco níže písnul, osobně reálná čísla měnu a datum/čas jsem vždy táhal přes nějaký vlastní třídu, (která obalila třeba i některé PHP-kové). Dříve jsem to měl součástí db-providera, kde existovali tři get/set klient/PHP/DB.
V jednoduchém případě jedu vždy přes ISO 8601 'YYYY-MM-DDThh:mm:ss'
s tím, že někdy z různých důvodů vynechávám to 'T'.
a pokud to lze, razím tezi, že i uživatel by si měl zvyknout na YYYY-MM-DD hh:mm:ss
, protože tak se nezaměnitelně domluvém všichni,
no a když to nelze, tak se holt musí šupačit tam a zpět, ale dělám to v aplikační vrstvě, ne v DB (i když ji případně využiji na ověření kdovíčeho).
echo strftime(_('%d. %m. %Y %H:%M'), strtotime($iso_string));Pokud zadá uživatel datum do formuláře, nabízí se dvě možnosti: Buď ho dostaneš v ISO formátu (JS selector nebo HTML5 input typu datetime), nebo ho dostaneš v lokalizovaném tvaru. V prvním případě ho rovnou pošli do databáze, v tom druhém máš dvě možnosti: Spolehnout se na strtotime() nebo vzít formátovací řetězec a použít strptime(). Obvykle je strtotime() dostatečně schopné. Jakmile máš timestamp, je snadné ho dostat do MySQL:
$flupdo->where('timestamp_sloupec = ?', strftime('%Y-%m-%d %H:%M:%S', strtotime($_POST['timestamp_policko'])));Ještě lepší je, když strtotime() a strftime() jsou součástí validace a formátování formuláře, takže z něj vždy leze validní ISO 8601 string. A v logice aplikace pak už s časem nijak nemanipuluješ a předáš ho databázi tak, jak je.
Někdy je potřeba rychle naformátovat nějaký řetězec do jiné podoby. Můžeme mí datum ve formátu Wed, 12 Dec 2007 08:00:00 GMT. Přeformátování provedeme následujícím skriptem:
$date = "Wed, 12 Dec 2007 08:00:00 GMT"; $date = strtotime($date); $date = StrFTime("%d.%c.%Y %H:%M:%S", $date); //12.12.2007 08:00:00Zdroj jsem našel zde, tak třeba se to někomu hodí
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.