Autor Téma: Ako správne pracovať s dátumom III.  (Přečteno 568 krát)

Offline František

  • Hrdina
  • ****
  • Příspěvků: 433
  • Karma: 4
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Ako správne pracovať s dátumom III.
« kdy: 28-08-2018, 08:37:49 »
stále ten problém s dátumom nemám vyriešený.

mám aplikáciu
ktorá používa MySQL (ukladá dd-mm-yyyy) a aj Firebird (ukladá dd.mm.yyyy), do DB ako VARCHAR,
potrebujem zjednotiť prácu s dátumom a časom,
aplikácia sa používa v rôznych krajinách a preto potrebujem zobrazovať podľa umiestnenia (nastavenia windows locale)

bude mi to takto fungovať?
urobím rutinu/triedu na ukladanie/čítanie pre jednotlive DB, len neviem ako urobiť tu konverziu, lebo
sk,ru: dd.mm.yyyy hh:nn:ss
uk: mm/dd/yyyy hh:nn:ss
fi: dd.mm.yyyy hh.mm.ss
atd ...
ukladať to rozparsované a potom skladať? - moc velký zásah s prerábaním dat v DB, nakoľko to ukladám vo VARCHAR, ale teraz to mam v jednej DB v rôznych formátoch - ak sa menilo locale

ps. a tomuto už vôbec nerozumiem: mám app v rôznych adresároch na jedom kompe a zobrazuje mi rozdielne formáty dátumu

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2293
  • Karma: 123
    • Verze Delphi: D2007, XE3, DX10
Re:Ako správne pracovať s dátumom III.
« Odpověď #1 kdy: 29-08-2018, 14:22:57 »
ukladať to rozparsované a potom skladať? - moc velký zásah s prerábaním dat v DB, nakoľko to ukladám vo VARCHAR, ale teraz to mam v jednej DB v rôznych formátoch - ak sa menilo locale
1. DB model by mel odpovidat pozadavkum tj. k cemu se ulozeny datum a cas pouziva.
2. Z tohoto pohledu nejobecnejsim a vetsinove spravnym resenim je pouzit nativni datovy typ konkretniho RDBMS a nechat konverze na DB vrstve tj. aplikace na strane Delphi pracuje s typem TDateTime a do/z DB ho predava/prebira pomoci .AsDateTime
3. Casovy udaj by mel predstavovat UTC
4. Vetsina RDBMS disponuje nejakymi funkcemi pro praci s datumem a casem, takze s nim lze pomoci techto funkci operovat v SQL prikazech
5. Pokud z nejakeho (pro mne tezko pochopitelneho) duvodu potrebujes zapisovat datum do DB jako text, melo by to vzdycky byt ve formatu ISO 8601 tj.  rok->mesic->datum->hodina->..., aby se podle sloupce dalo prinejmensim tridit...



Citace
ps. a tomuto už vôbec nerozumiem: mám app v rôznych adresároch na jedom kompe a zobrazuje mi rozdielne formáty dátumu
Na to se neda jednoduse odpovedet, to zalezi jak ho zobrazujes

Offline Delfin

  • Guru
  • *****
  • Příspěvků: 1281
  • Karma: 56
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Ako správne pracovať s dátumom III.
« Odpověď #2 kdy: 29-08-2018, 14:31:33 »

Souhlas, nicmene OP se neda presvedcit ::) :) Pak to skonci tim ze sem na forum nekdo prijde, vyhleda si tema "jak spravne pracovat s datumem" a hned bude na svete o nekolik zmrsene navzrenych databazi vic.

Prepinam ;D
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):