Pozwól mi wyjaśnić: Nie pytam o właściwy sposób przechowywania określonego strefy czasowej określonego datetime w bazie danych. Mówię o strefach czasowych. NA PRZYKŁAD:Właściwy sposób przechowywania strefy czasowej w bazie danych?
Mam tabelę MySQL o nazwie "użytkownicy". Teraz, w tej tabeli, chcę mieć kolumnę, która zawiera strefę czasową miejsca, w którym mieszka użytkownik (jest to udostępnione przez użytkownika, zostanie wybrane z listy). Pracuję w PHP, która ma listę ciągów strefy czasowej, takie jak:
Teraz oczywiste rozwiązanie (przynajmniej dla mnie) byłoby utworzyć kolumnę VARCHAR w tabeli Users , a następnie zapamiętaj ciąg strefy czasowej używanej przez PHP w tej kolumnie.
Teraz, gdy o tym myślę, zakładam, że zawsze będę używał PHP do interakcji z tą tabelą bazy danych, która, choć jest prawdziwa, może nie być tak w przyszłości. I (popraw mnie jeśli się mylę) Struny stref czasowych PHP prawdopodobnie nie działają dla innych języków programowania, być może inne języki mają własne "stałe" do obsługi strefy czasowej.
Jak podchodzisz do zapisywania preferencji użytkownika w strefie czasowej w kolumnie DB? Wszelkie pomysły są z pewnością doceniane.
Uwaga: przydatne w strefach czasowych PHP jest to, że nawet jeśli DST działa, automatycznie uwzględnia to, co jest niesamowite. Więc widzisz moje zainteresowanie ich użyciem zamiast tylko przechowywać przesunięcie numeryczne.
Możesz zapisać przesunięcie liczbowe w bazie danych i utworzyć plik PHP "config", który odwzorowuje numeryczne przesunięcie z powrotem na łańcuch strefy czasowej PHP. – Passerby
@Passerby - Przesunięcie nie jest strefą czasową. Istnieje wiele stref czasowych, które zmieniają przesunięcia w ciągu roku i wiele stref czasowych, które mają takie same przesunięcia. –
@MattJohnson Możesz przechowywać offset dowolnego formatu, o ile twój program wie, jak "przetłumaczyć" je z powrotem na stałe specyficzne dla danego języka. Zamiast przechowywać "-8" dla całej strefy -8, możesz zapisać "-8.1" dla Kalifornii, "-8.2" dla innego miejsca (nie Amerykanina, więc nie wiem zbyt wiele :)). – Passerby