Autor Zpráva
quatzael
Profil
Je nějak možné, aby jsem mohl mít v databázi (MySQL) datum ve formátu dd.mm.yyyy v jednom sloupci a čas ve formátu hh:mm (24 h) v jiném?
Potřeboval bych, aby SQL potom s těmito údaji uměla zacházet jako s datem.
Tori
Profil
quatzael:
- co potřebujete dělat se samotným časem? (řazení, porovnávání, ...)
- co se samotným datumem?
- co s celým údajem datum+čas?

Podle toho bych asi rozhodovala, jestli samostatné sloupce nebo ne.
quatzael
Profil
Tori:
Sloupce na datum a čas chci mít spíše zvlášť, samozřejmě jestli to nezabraňuje nějak seřazení podle data a času
Určitě budu potřebovat vybírat záznamy podle data/času nebo oboje s podmínkou od .. do ..

Potřebuju, aby to bylo co nejvíc flexibilní a šlo s tím víc věcí..
ts_istudio
Profil
quatzael:
Sloupce na datum a čas chci mít spíše zvlášť

Pokud na to nemáš nějaký atypický požadavek týkající se filtrování nebo třídění, používal bych DATETIME.
quatzael
Profil
Ale mě právě zajímá jak udělat to, aby se vkládalo do sloupce datum a čas, tak aby s tím uměla databáze zacházet jako s datem a přitom to bylo ve formátu: dd.mm.yyyy a hh:mm (24 h).
Jestli to jde tak ideálně, aby si tam sama databáze zapsala aktuální datum a čas při každým zápisu. A aby to bylo ve formátu, který jsem uváděl. Popřípadě, aby se to na daný formát dalo převádět..
juriad
Profil
quatzael:
Nesnaž se mít v databázi tebou formátovaný datum, nikdy s ním nebude možné provádět všechny operace. Použij některý z typů k tomu určený.
Také přece nebudeš do databáze ukládat desetinné číslo jako řetězec, protože tam chceš mít českou desetinnou čárku místo hnusné imperialistické desetinné tečky.

aby se to na daný formát dalo převádět..
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
prostě při SELECTU místo názvu sloupečku uvedeš:
DATE_FORMAT(sloupec_s_datumem, '%e.%c.%Y %k:%i:%s') AS formatovany_datum

úložka: vypiš počet objednávek v jednotlivých dnech v týdnu za poslední rok; předformátovaný datum tuto operaci nenaučíš
quatzael
Profil
juriad:
Mě imperialistický tečky vůbec nevadí, naopak je sám většinou používám místo čárek. Ale ty stránky dělám pro český uživatele, tak chci mít, aby se mi zobrazoval český formát.

Moc jsem to ale nepochopil jak to myslíš..

Při selectu to udělám když budu potřebovat čas zjistit. Ale jak tam mám do tý databáze to datum vložit?? Mám si aktuální datum zjistit v PHP pomocí funkce date() a potom to vložit do databáze v nějakým tom formátu s pomlčkama nebo to umí přímo ta databáze sama zjistit datum a vložit automaticky??

Taky nechápu co znamená ta proměnná formatovany_datum.. jako výslednou položku pole??

že by to bylo nějak takhle:

$query = "SELECT (column_1, column_2, DATE_FORMAT(sloupec_s_datumem, '%e.%c.%Y %k:%i:%s') AS formatovany_datum) FROM table;

$send = mysqli_query($db_connect, $query);     
$result = mysqli_fetch_array($send);
$date = $result[formatovany_datum];
juriad
Profil
Ano, veškeré datumy musí být formátované pro MySQL, ten pomlčkový formát.
$insert = "INSERT INTO tabulka (datum) VALUES ('" . date("Y-m-d H:i:s") . "')";
mysqli_query($con, $insert);
Ale můžeš si potom vybrat, zda formátování provedeš už v mysql:
$select = "SELECT DATE_FORMAT(datum, '%e.%c.%Y %k:%i:%s') AS formatovany_datum FROM tabulka LIMIT 1";
$result = mysqli_query($con, $select);
$array = mysqli_fetch_array($result);
$date = $array['formatovany_datum'];
nebo si naformátuješ datum až v PHP:
$select ="SELECT datum FROM tabulka LIMIT 1";
$result = mysqli_query($con, $select);
$array = mysqli_fetch_array($result);
$date = date('j.n.Y H:i:s', strtotime($array['datum']));
quatzael
Profil
juriad:
Díky moc!! Tohle je skvěle vysvětlený!!
juriad
Profil
Nejlepší možnosti je asi formátovat až v PHP, pak si můžeš provádět "triky" jako tady na diskusi: všimni si pole zasláno u každého příspěvku. Vypisuje Dnes, Včera, Předevčírem, případně konkrétní datum, pokud je příspěvek příliš starý.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: