Body zdarma Body zdarma
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Avatar
Lu Kiss
Člen
Avatar
Lu Kiss:6. května 15:21

Ahoj,
drobný dotaz. V jakém formátu by jste v MySql (5.7) ukládadli unixový timestamp který je např:
'1592037639.29625' a je třeba se snažit o zachování přesnosti?

Děkuji za tipy :).

Zkusil jsem: 1. jako varchar a v aplikaci si to převeduna float a poté na datetime
2. Jako decimal (15,5)
3. jako bignit 159203763929625 = 1592037639.29625 * 10000
4. nějak jinak.

Chci docílit: Nejlepeší upůsob pro uchování unix timestampu v mysql db

 
Odpovědět 6. května 15:21
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7. května 8:00

https://dev.mysql.com/…atetime.html
DATE, DATETIME, and TIMESTAMP
https://dev.mysql.com/…e-types.html
DATE, TIME, DATETIME, TIMESTAMP, and YEAR

DATETIME        '0000-00-00 00:00:00'
TIMESTAMP       '0000-00-00 00:00:00'
 
Nahoru Odpovědět 7. května 8:00
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Lu Kiss
Tomáš Novotný:7. května 8:45

Ahoj,
za desetinnou tečkou jsou uvedeny mili a mikrosekundy před klasicky datum a čas. Spíše záleží na tobě, jakou přesnost potřebuješ uchovávat. Pro většinu použití dle mne dostačují sekundy.
Jak uchovávat se odvíjí od toho jak s daty pracuješ a kolik jich je. Pokud relativně málo, bude se ti lépe pracovat s formátem DATE TIME. Pokud bys měl miliony záznamů, třeba nějaké logy tam by za zvážení stál spíše ten INT případně oba, aby nebylo potřeba tolikrát konverze.
Podobně problém jsem řešil u IPv4, pro kterou v databázi nebyl vhodný datatyp. Záznamů bylo řádově statisíce. Takže pro uživatele human readable format ve varchar, pro interní potřeby kódu int. Existují sice funkce pro převody jak v DB tak třeba v PHP, ale to se mi na dané databázi a struktuře výkonově neosvědčilo.

Nahoru Odpovědět 7. května 8:45
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Lu Kiss
Člen
Avatar
Lu Kiss:7. května 18:23

Nakonec jsem to vyřešil jako biginit. Bylo potřeba pracovat i s mikrosekundami (nudné školní úlohy :D). V reálu bych se samozřejmně vystačil i se sekundami, takže bych na ně ten DT použil. :)

 
Nahoru Odpovědět 7. května 18:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.