Przechowywanie czasu z milisekundami w bazie danych

10

Krótkie pytanie dotyczące przechowywania „czasu” w bazie danych. Rejestruję czas uruchamiania użytkowników w formacie 00: 00: 00: 00 (godziny, minuty, sekundy, milisekundy).

Pierwotnie zamierzałem go przechowywać, TIMEale potem zdałem sobie sprawę, że MySQL nie obsługuje milisekund w tym typie.

Będę przechowywać rzeczywisty czas pobrany ze stopera użytkowników, a nie czas, w którym uruchomili się i zakończyli (zostanie to obliczone przed włożeniem).

Jakiego rodzaju pola najlepiej użyć? Myślałam albo doublealbo float, ale nie jestem pewien, że będzie działać?

Elliott
źródło

Odpowiedzi:

6

Osobiście używałbym typów całkowitych na czas trwania

Przykład: 340 000 milisekund to 340000 w kolumnie int bez znaku.

Dla mnie data, godzina, data itp. Dotyczą wyraźnych punktów w czasie. 340 sekund w tym kontekście nie ma znaczenia. Początek date/timepozwala oczywiście dodać czas trwania

gbn
źródło
3
Do tego celu służy standardowy intervaltyp danych SQL . Ale nie wszystkie DBMS (i zdecydowanie nie MySQL) obsługują to.
a_horse_w_no_name
Dzięki za odpowiedź, czy musiałbym przekonwertować go na standardowy format, ponieważ obecnie jest on w formacie 00: 00: 00: 00? Czy mogę ustawić kolumnę, aby zezwalała na ten typ formatu?
Elliott,
@Elliott: na wyświetlaczu można. To jest tylko numer inaczej
gbn
1
Zwróć uwagę, że Twój format to prawdopodobnie (lub powinien być dla czytelności) 00: 00: 00.000 (zwróć uwagę na kropkę zamiast dwukropka i 3 cyfry na milisekundy
Jannes
2

To zależy od tego, jak długo chcesz mierzyć. Jeśli nie będziesz nagrywać więcej niż 2 ^ 32 lub 4294967296 ms, zwykłe int bez znaku jest w porządku. To odpowiada około 50 dniom zegara, btw.

Jeśli przechowujesz uniksowe znaczniki czasu lub większe interwały, spójrz na użycie bigint. Daje to 8 bajtów miejsca lub możliwość rejestrowania czasów o długości 1,84467440737096e + 19 ms (czyli około 500 milionów lat)

atxdba
źródło
1

Jeśli korzystasz z MySQL 5.6.4 lub nowszy, można użyć TIME(3), DATETIME(3)a TIMESTAMP(3)typy kolumn do przechowywania do 6 cyfr dziesiętnych (zamiast 3z liczbą cyfr ułamkowych co potrzeba). Część ułamkowa jest dodawana do ciągu czasu po kropce; Przykład: 2018-09-08 17:51:04.781.

Oficjalne odniesienie

Impas
źródło