Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Gdzie ustawić wartość daty i godziny UTC w aplikacji wielowarstwowej:warstwa prezentacji, domena lub baza danych?

Głosuję za ustawieniem go w procedurze (lub domyślnie dla kolumny, dla insertów). Nie ma powodu, aby przekazywać wszystkie te informacje przez wszystkie warstwy, chyba że potrzebna jest dokładność mikrosekundowa, aby odróżnić np. kiedy użytkownik kliknął przycisk, a kiedy transakcja została zatwierdzona w bazie danych. Jest to szczególnie ważne, jeśli masz aplikację rozproszoną — czy chcesz polegać na synchronizacji wszystkich serwerów WWW/aplikacji, nie wspominając o stacjach roboczych użytkowników końcowych dla aplikacji klient/serwer? Możesz mieć serwery w różnych centrach danych, wszystkie z różnymi strefami czasowymi, niektóre obserwują czas letni, inne nie itp. DateTime.UtcNow powinien zniwelować większość tych różnic, ale i tak wracam do przekazywania wszystkich tych danych bez powodu. Baza danych wie, która jest godzina; niech przechowuje wartość dla Ciebie i trzymaj całą tę logikę poza aplikacją.

(Również, jeśli przechowujesz czas UTC, czy naprawdę potrzebujesz DATETIMEOFFSET? ? Jeśli tak, nadal potrzebujesz sposobu, aby procedura wiedziała, z której strefy czasowej pochodzą te informacje. Jeśli nie, prawdopodobnie powinieneś po prostu użyć SMALLDATETIME/DATETIME/DATETIME2 w zależności od wymaganej dokładności).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dane przestawne tabeli przestawnej przekształcania SQL

  2. SQL:Zastąp część kolumny w wielu wierszach na podstawie drugiej tabeli

  3. Konwertuj „datetime2” na „time” w SQL Server (przykłady T-SQL)

  4. java.sql.SQLException:nie znaleziono odpowiedniego sterownika dla jdbc:sqlserver

  5. Kolumna GUID programu SQL Server 2008 zawiera same zera