Pracuję nad projektem PostgreSQL DB i zastanawiam się, jak najlepiej przechowywać znaczniki czasu.
Założenia
Użytkownicy w różnych strefach czasowych będą korzystać z bazy danych dla wszystkich funkcji CRUD.
Przejrzałem 2 opcje:
timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC')
bigint NOT NULL DEFAULT
Dla timestamp
chciałbym wysłać ciąg, który reprezentuje dokładną (UTC) znacznik czasu w tej chwili INSERT.
Dla bigint
chciałbym przechowywać dokładnie to samo, ale w formacie liczbowym. (problemy ze strefą czasową są obsługiwane przed przekazaniem millis na serwer, więc zawsze millis w UTC).
Jedną z głównych zalet przechowywania a bigint
może być to, że łatwiej byłoby przechowywać i odzyskiwać, ponieważ przekazywanie poprawnie sformatowanego znacznika czasu jest bardziej złożone niż zwykła liczba (milis od czasu wydania Uniksa).
Moje pytanie brzmi, które pozwoliłoby na najbardziej elastyczny projekt i jakie byłyby pułapki każdego podejścia.