Zadejte hledaný výraz...

Využiť DateTime alebo Date a Time?

Peter
verified
rating uzivatele
26. 11. 2015 10:37:34
Ahojte,
Plánujem rozbehnúť jeden projekt kde bude do tabuľky denne pridaných odhadom 5000 riadkov s dátumom. To je vymyslené číslo, ide len o to že časom bude tabuľka naberať poriadne na riadkoch.
Ide mi práve o ten dátum. Čo je rýchlejšie? Resp. ako rýchlejšie to interpretuje MySQL/MariaDB? DATETIME dokopy alebo DATE a TIME zvlášť?
Moje operácie s týmto stĺpcom/stĺpcami budú hlavne:
- výpis riadkov / časov na 1 konkrétny deň (1 dátum)
- vyhľadanie riadkov podľa konkrétneho dátumu (času nie, vždy to bude celý 24 hod. rozsah)
Skúšal som to na 1,000,000 riadkoch s tým, že na stĺpcoch bola samozrejme aktivovaná indexácia a zdalo sa mi, že varianta č. 2 (teda date a time oddelené) je v určitých ohľadoch rýchlejšia. Ale bol to Windows a tiež notebook v powersave móde a taktiež to nie je bohvieaký rozsah riadkov. Čo myslíte že bude rýchlejšie? Pouźívať '=' pri WHERE pri oddelených stĺpcoch alebo BETWEEN pri DATETIME (dátum + od 00h. do 23h.)?
Ďakujem vopred za odpovede a úvahy :)
26. 11. 2015 10:37:34
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155423
i-PRESS
verified
rating uzivatele
(2 hodnocení)
26. 11. 2015 11:23:40
Každý typ má svůj důvod a je vhodný k něčemu jinému. Nepíšete, k čemu to slouží, takže třeba ten time ani nepotřebujete :-)
Obecně bych ale z toho co píšete zvolil spíše date, je třeba ale zvážit, jestli někdy v budoucnu nemůže čas hrát roli při výběru z DB, páč pak bych šel do datetime.
Je dobré ale myslet na to, že datetime ani date + time neřeší časové pásmo, ani letní/zimní čas, takže to může vyžadovat další záznamy o zóně, případně využít TIMESTAMP pro jednoznačný datum a čas.
26. 11. 2015 11:23:40
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155422
node
verified
rating uzivatele
(5 hodnocení)
26. 11. 2015 11:46:35
pouzivam unix timestamp od kedy robim s php, hoci to nebola moja vedoma volba, a nejako si neviem predstavit dovod pouzivat hocico ine.
26. 11. 2015 11:46:35
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155421
Kovboj
verified
rating uzivatele
(13 hodnocení)
26. 11. 2015 11:49:10
Nejrychlejší by asi bylo kdybys měl navíc sloupec definovaný jako číslo a tam ukládal datumy jako číslo třeba ve formátu '20152611'. Hledání jednoho čísla ve velké tabulce budeš mít rychlejší než jakákoliv operace s datumem.
Napsal Buri;1244059
Ahojte,
Plánujem rozbehnúť jeden projekt kde bude do tabuľky denne pridaných odhadom 5000 riadkov s dátumom. To je vymyslené číslo, ide len o to že časom bude tabuľka naberať poriadne na riadkoch.
Ide mi práve o ten dátum. Čo je rýchlejšie? Resp. ako rýchlejšie to interpretuje MySQL/MariaDB? DATETIME dokopy alebo DATE a TIME zvlášť?
Moje operácie s týmto stĺpcom/stĺpcami budú hlavne:
- výpis riadkov / časov na 1 konkrétny deň (1 dátum)
- vyhľadanie riadkov podľa konkrétneho dátumu (času nie, vždy to bude celý 24 hod. rozsah)
Skúšal som to na 1,000,000 riadkoch s tým, že na stĺpcoch bola samozrejme aktivovaná indexácia a zdalo sa mi, že varianta č. 2 (teda date a time oddelené) je v určitých ohľadoch rýchlejšia. Ale bol to Windows a tiež notebook v powersave móde a taktiež to nie je bohvieaký rozsah riadkov. Čo myslíte že bude rýchlejšie? Pouźívať '=' pri WHERE pri oddelených stĺpcoch alebo BETWEEN pri DATETIME (dátum + od 00h. do 23h.)?
Ďakujem vopred za odpovede a úvahy :)
26. 11. 2015 11:49:10
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155420
Tom
verified
rating uzivatele
(7 hodnocení)
26. 11. 2015 11:52:40
Napsal Kovboj;1244088
Nejrychlejší by asi bylo kdybys měl navíc sloupec definovaný jako číslo a tam ukládal datumy jako číslo třeba ve formátu '20152611'. Hledání jednoho čísla ve velké tabulce budeš mít rychlejší než jakákoliv operace s datumem.
Vyhledání jednoho čísla bude stejně rychlé jako vyhledání jednoho timestampu, při práci s rozsahem už na tom bude lépe timestamp.
Obecně záleží na to, k čemu to potřebuješ. pokud víš, že vždy budeš hledat podle data, pak bude stačit date - index bude menší. Nicméně tě to může omezovat v budoucnu při změně databáze. date a time zvlášť mi nepřijde jako dobrá volba, pro snadné vyhledání to může být rychlé, ale při joinech už to může začít zpomalovat
26. 11. 2015 11:52:40
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155419
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
26. 11. 2015 12:53:22
Napsal node;1244086
pouzivam unix timestamp od kedy robim s php, hoci to nebola moja vedoma volba, a nejako si neviem predstavit dovod pouzivat hocico ine.
Časové zóny.
S timestamp navíc nejdou ukládat data před 1970.
26. 11. 2015 12:53:22
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155418
Používejte DATETIME hlavně kvůli časové zóně. Pokud použijete TIME nebo DATE, tak víte prd v jakém časovém pásmu se daná změna provedla.
26. 11. 2015 13:05:21
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155417
i-PRESS
verified
rating uzivatele
(2 hodnocení)
26. 11. 2015 13:12:46
Napsal tomas86;1244104
Používejte DATETIME hlavně kvůli časové zóně.
Jak Vám DATETIME pomůže s časovou zónou? Samozřejmě, můžete vše normalizovat a ukládat v UTC/GMT, ale stejně musíte být schopen z jiných dat zjistit, v jakém časovém pásmu byl ten údaj pořízen.. Datetime sám o sobě s tím právě vůbec nepomáhá.
26. 11. 2015 13:12:46
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155416
node
verified
rating uzivatele
(5 hodnocení)
26. 11. 2015 13:53:14
Napsal Souki;1244103
Časové zóny.
S timestamp navíc nejdou ukládat data před 1970.
To je pravda, ale zalezi od navrhu aplikacie(mala by mat zony nastavene niekde, pripadne nepouzivat timestamp) a pre starsie datumy staci pouzit negativnu hodnotu(pred krisom / po kristovy :D )
26. 11. 2015 13:53:14
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155415
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
26. 11. 2015 14:32:42
Napsal node;1244119
To je pravda, ale zalezi od navrhu aplikacie(mala by mat zony nastavene niekde, pripadne nepouzivat timestamp) a pre starsie datumy staci pouzit negativnu hodnotu(pred krisom / po kristovy :D )
Ale proč? Všechno to řeší datetime a timestamp proti němu nemá snad žádnou výhodu. Datetime navíc má rovnou spoustu funkcí na práci s datem/časem.
Jedinou vyjímkou jsou logy apod - tam je UTC praktičtější a hlavně jde automaticky aktualizovat čas při změně řádku apod - to datetime neumí.
26. 11. 2015 14:32:42
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155414
Peter
verified
rating uzivatele
26. 11. 2015 14:53:01
Napsal i-PRESS;1244079
Každý typ má svůj důvod a je vhodný k něčemu jinému. Nepíšete, k čemu to slouží, takže třeba ten time ani nepotřebujete :-)
...
Je dobré ale myslet na to, že datetime ani date + time neřeší časové pásmo, ani letní/zimní čas, takže to může vyžadovat další záznamy o zóně, případně využít TIMESTAMP pro jednoznačný datum a čas.
A to je fakt, časovú zónu tam potrebujem. Takže mi asi nezostáva nič iné ako DATETIME. Na to som pozabudol. :-}
A čas mi tam vo vyhľadávaní nehrá rolu, ten iba vypisujem, ale nevyhľadávam. Preto mi prišlo rýchlejšie hľadať v čistom DATE stĺpci.
26. 11. 2015 14:53:01
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155413
i-PRESS
verified
rating uzivatele
(2 hodnocení)
26. 11. 2015 14:59:01
Napsal Buri;1244140
A to je fakt, časovú zónu tam potrebujem. Takže mi asi nezostáva nič iné ako DATETIME
Pozor ale na to, že MySQL datetime neobsahuje informaci o časové zóně. Pokud je třeba s ní při výpisu počítat, je potřeba si TZ, případně offset uložit samostatně a použít třeba CONVERT_TZ()
26. 11. 2015 14:59:01
https://webtrh.cz/diskuse/vyuzit-datetime-alebo-date-a-time/#reply1155412
Pro odpověď se přihlašte.
Přihlásit