Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Speichern von DateTime (UTC) vs. Speichern von DateTimeOffset

Es gibt einen großen Unterschied, bei dem Sie UTC nicht allein verwenden können.

  • Wenn Sie ein solches Szenario haben

    • Ein Server und mehrere Kunden (alle geografisch in verschiedenen Zeitzonen )
    • Clients erstellen einige Daten mit datetime-Informationen
    • Kunden speichern alles auf einem zentralen Server
  • Dann:

    • datetimeoffset speichert Ortszeit des Clients und ALSO-Offset zur UTC-Zeit
    • alle Clients kennen die UTC-Zeit aller Daten und auch eine Ortszeit am Ort, an dem die Informationen entstanden sind
  • Aber:

    • UTC datetime speichert nur UTC datetime , sodass Sie keine Informationen über die Ortszeit am Standort des Clients haben, von dem die Daten stammen
    • Andere Clients kennen die Ortszeit des Ortes, von dem Datums- und Uhrzeitinformationen stammen, nicht
    • Andere Clients können nur ihre lokale Zeit aus der Datenbank (unter Verwendung der UTC-Zeit) berechnen, nicht die lokale Zeit des Clients, von dem die Daten stammen

Einfaches Beispiel ist ein Flugticket-Reservierungssystem ... Das Flugticket sollte 2 Zeiten enthalten:- "Start"-Zeit (in der Zeitzone der "Von"-Stadt) - "Lande"-Zeit (in der Zeitzone der "Ziel"-Stadt)