Autor | Zpráva | ||
---|---|---|---|
anonymníí Profil * |
#1 · Zasláno: 23. 7. 2015, 14:47:32
Ahoj,
ač všude používám pro ukládání data date nebo datetime , nyní jsem dostal do správy už druhý projekt od dvou různých programátorů, kteří používají pro ukládání data sloupec typu INT a v něm skladují timestamp .
Kromě toho, že timestamp má (pokud se nepletu) vlastní typ a neměl by být skladován jako INT, napadla mě otázka PROČ. Je nějaký rozdíl mezi ukládáním timestampů a datumů, pokud ano, jaký a kdy který sloupec použít? Je využívání date(time) všude chybou? Děkuji. |
||
Camo Profil |
#2 · Zasláno: 23. 7. 2015, 15:08:18
anonymníí:
Myslím že to je len vec názoru. Datetime ti umožní použiť natívne funkcie databázy pre prácu s dátumom. Timestamp ako integer logicky nie. Ale to nieje problém. Iba porovnávaš čísla. Typ timestamp v DB je podobný typu datetime ale ukladá aj časovú zónu https://dev.mysql.com/doc/refman/5.5/en/datetime.html |
||
Alphard Profil |
#3 · Zasláno: 23. 7. 2015, 15:31:52
Viz třeba stackoverflow.com/questions/409286/datetime-vs-timestamp.
Nemyslím, že je to jen otázka názoru. Od data očekáváme některé vlastnosti navíc oproti číslu, proto dává smysl použít pro ně vyšší vrstvu. Já třeba kvůli konzistenci u projektů, které vedu, prosazuji datetime, nemícháme to dohromady. Pokud naopak přijdete k projektu, který vede někdo jiný a používá timestampy, beru jako rozumné dodržet stejný styl (pokud je to možné), ale začít je používat sám i na nové projekty se mi zdá hloupé. |
||
Camo Profil |
Alphard:
Predsa nieje žiadny problém previesť timestamp na dátum. Môžešmi upresniť čo myslíš pod pojmom "nekteré vlastnosti navíc" ktoré by sa nedali použiť pri timestampe? |
||
Alphard Profil |
Otázka se sice týká datových typů v databázi, ale já to dost spojuji s reprezentací data v aplikaci. A to už je otázka, jak vyvíjíš. Někdo se snaží o správný objektový návrh a někomu vyhovuje používat prakticky jen čísla a stringy.
Činnost, která je typické pro datum, je např. přičtení dne. Tím nemyslím přičtení nějaké konstanty 5*24*3600 k číselné proměnné, ale opravdu metodu addDay(5) třídy reprezentující datum. Vedle toho máme např. metodu addWorkDay(5) , která přičte 5 pracovních dní (to už konstantou nevyřešíš) a mnoho dalších.
Samozřejmě můžeš totéž udělat bez objektů pomocí funkcí, ale to už bychom se dostávali k výhodám a nevýhodám OOP obecně. A když přistoupíme na to, že je rozumné datum v aplikaci reprezentovat výhradně jako instance vhodné třídy, je podle mě logické, že budeme speciální datový typ používat i v databázi. Opět proto, že i na úrovni databáze se provádí nějaká aritmetika s datem a chceme ji mít jednotnou. Nebudu mít v databázi vedle sebe sloupce reprezentující stejný typ dat s různým datovým typem, to je otázka konzistence. Konverze mezi db a aplikační reprezentací je pak zcela automatická, ručně nic převádět nebudu. |
||
Camo Profil |
#6 · Zasláno: 23. 7. 2015, 16:39:02
Alphard:
Díky. Ja súhlasím. |
||
Časová prodleva: 10 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0