ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
MySQL (8) - Ukládání datumůDnes se popereme s kalendářem - budeme totiž do MySQL ukládat datum a čas. Snad každý soudobý DBMS systém má podporu pro zpracování a ukládání
hodnot reprezentujících datum a čas. Nejinak je tomu v případě MySQL a
proto se dnes podíváme, co nám tato databáze může při zpracování
časových údajů nabídnout. Pozn.: V tomto článku, a vlastně v
celém seriálu se pokusím používat termín "data" (jednotné číslo to
nemá) pro obecné označení údajů v databázi a termín "datumy" (jedn. č.
datum) pro údaje o čase. Abychom si rozumněli. Datový typ DateMySQL používá pro uložení kalendářních datumů datový typ Date. Pojme datumy od 1.1.1000 do 31.12.9999, což je myslím více než dostatečné. V databázi zabere 3 bajty místa. Při vkládání údajů do sloupce typu Date je MySQL více než benevolentní, takže všechny níže uvedené způsoby můžete použít: 20041231 Jestliže při zadávání datumu překročíte povolený rozsah, vyvolá to
varování a do databáze se vloží 0000-00-00. Datový typ Date budete asi
běžně používat na takové věci, jako je ukládání datumů v obchodních
aplikacích. Třeba v účetnictví. Typ TimeMySQL datový typ Time neukládá datum, ale čas. Může se jednat o čas během skutečného dne, nebo prostě může jít o interval mezi dvěma událostmi. To také vysvětluje, proč sloupec typu Time nemá rozsah 00:00:00 - 23:59:59 (jak byste možná čekali), ale -838:59:59 až +838:59:59. Rovněž údaje o čase lze vkládat různými způsoby: 1020
V databázi zabírá tento typ 3 bajty místa, stejně jako Date. Při překročení rozsahu se vyvolá varování a vloží se hodnota 00:00. Na co použijete typ Time? Třeba na ukládání sportovních výsledků. Typ DatetimeTyp datetime vlastně kombinuje předchozí dva typy, a to tím, že
ukládá jak datum, tak i čas. Umím si jej docela dobře představit třeba
jako kandidáta pro uložení datumů z píchaček (díky nočním směnám totiž
můžete skončit práci jiný den, než jste ji začali). O zadávání platí
to, co bylo řečeno výše. V databázi zabírá osm bajtů místa. Na tomto místě se sluší podotknout, že MySQL má rovněž k dispozici
celou řadu funkcí pro práci s datem a časem. Povíme si o nich později v
našem seriálu; teď jen naznačím, že takové funkce umějí datumy sčítat,
testovat, zda událost je v nějakém intervalu, konvertovat a podobně.
Typ YearPřizám se, že datový typ YEAR jsem až doposud neznal. Slouží pro
uložení roku, a to buď jako dvojciferné, nebo jako čtyřciferné číslo.
Pokud je číslo dvojciferné, může nabývat hodnot od nuly do 99, přičemž
69=2069, ale 70=1970. Čtyřmístná varianta ukládá roky od 1901 do 2155.
Docela by mě zajímalo, jestli někdo tuhle kulišárnu používate; kdyžtak
můžete přispět do diskuse. Unixové časové razítkoMySQL má velmi dobrou podporu, pokud jde o výpočty s unixovými
časovými razítky. Unix-timestamp, jak samozřejmě víte, reprezentuje
počet sekund uplynulých od půlnoci 1.1.1970 a MySQL umí převádět jak
klasické datumy na unix-timestampy, tak i naopak. Skutečně jsem viděl
aplikace, které všechny datumy ukládaly jako unixová časová razítka. Typ TimestampTimestamp jsem si nechal nakonec. Ukládá do databáze informace o
tom, kdy byl daný řádek založen nebo aktualizován. Timestampy mohou
nabývat hodnot od 1.1.1970 do 31.12.2037 a v databázi zabírají 4 bajty
místa. Jejich chování se v posledních verzích MySQL dost měnilo, takže
pokud chcete timestampy používat, prostudujte si dokumentaci. MySQL, datumy a praxeZ čistě praktického hlediska bych při používání datumů v MySQL
předložil čtenáři několik postřehů:
Související články
Předchozí Celou kategorii (seriál) Další
MySQL (1) - pestrý svět databází
MySQL (2) - Instalujeme databázi MySQL MYSQL (3) Instalujeme MySQL podruhé MySQL (4) - něco terminologie MySQL (5) - tajuplné SQL MySQL (6) - Ukládáme řetězce MySQL (7) - hrátky s čísly MySQL (9) - Další datové typy MySQL (10) - tvorba databáze. Základy DDL MySQL (11) - vytváříme tabulky MySQL (12) - tipy k tvorbě tabulek MySQL (13) - Vkládáme data MySQL (14) - Upravujeme data MySQL (15) - Odstraňujeme data MySQL (16) - Tipy a triky k manipulaci s daty MySQL (17) - vybíráme data MySQL (18) - Filtrujeme data MySQL (19) - Řadíme data MySQL (20) - spojení více tabulek MySQL (21) - klauzule JOIN MySQL (22) - tipy a triky ke spojování tabulek MySQL (23) - relace 1:N a N:N MySQL (24) - Seskupujeme záznamy MySQL (25) - hrátky se seskupenými záznamy MySQL (26) - Poddotazy MySQL (27) - Složitější dotazy MySQL (28) - Dotazy pro pokročilé MySQL (29) - Vracení nejvyšších záznamů MySQL (30) - průběžné součty MySQL (31) - Indexy MySQL (32) - ještě k indexům MySQL (33) - Příkaz UNION MySQL (34) - větvení kódu a pivotní tabulky MySQL (35) - vestavěné funkce MySQL (36) - Regulární výrazy MySQL (37) - použití fulltextového vyhledávání MySQL (38) - Fulltext a praxe MySQL (39) - typy tabulek v MySQL MySQL (40) - další typy tabulek MySQL (41) - Transakce MySQL (42) - ještě k transakcím MySQL (43) - Uložené procedury MySQL (44) - parametry uložených procedur MySQL (45) - větvení kódu uložených procedur MySQL (46) - Triggery MySQL (47) - Triggery a praxe MySQL (48) - UDF MySQL (49) - pohledy MySQL (50) - Pohledy podruhé MySQL (51) - Metadata MySQL (52) - A co zálohování? MySQL (53) - SELECT INTO OUTFILE MySQL (54) - zálohování MySQL z webu MySQL (55) - zálohování MySQL z pohledu správce MySQL (56) - Obnova zálohovaných dat MySQL (57) - Ach, ta čeština MySQL (58) - čeština v praxi MySQL (59) - české řazení MySQL (60) - řádkový klient MySQL (61) - Oprávnění MySQL (62) - Oprávnění podruhé MySQL (63) - jemné nastavení práv MySQL (64) - nad dotazy čtenářů MySQL (65) - Ladíme server MySQL (66) - Ještě k ladění serveru MySQL - (67) MySQL (68) - Závěr MySQL (69) - Prepared Statements Předchozí Celou kategorii (seriál) Další
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |