Wir möchten Zeitzonen für jede unserer Adressen in der Datenbank erfassen. Was ist die beste Vorgehensweise zum Speichern der Zeitzonen? Wie würden Sie Zeitzonen für die vorhandenen Adressdatensätze erfassen?
Ich verwende Microsoft SQL Server, .net mvc, C #. Anregungen wäre sehr dankbar.
database
database-design
time
Rodney
quelle
quelle
Antworten:
Sie möchten etwas speichern, das sich nicht ständig ändert (oder zweimal im Jahr). Die Zeitzonendatenbank https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ist genau das Richtige. Sie speichern also nur zwei Buchstaben.
In dieser Datenbank können Sie den Zeitversatz abfragen und feststellen, wann die Sommerzeit aktiv ist. Es ist nicht nur der Zeitversatz, es gibt Ihnen auch einen Bereich, so dass viele Orte auf dem gleichen Breitengrad unterschiedliche Codes haben und ihre Zeitzonenregeln individuell ändern können und Ihre Software damit umgehen kann.
Das einzige Mal, wenn Sie Änderungen an Ihrer Datenbank vornehmen müssen, ist, wenn ein Standort die Zeitzone ändert, zu der er gehört, was sehr selten wäre.
quelle
Die absolut beste Vorgehensweise wäre die Verwendung einer Datenbank, die den
TIMESTAMP WITH TIMEZONE
von SQL99 definierten Datentyp unterstützt .SQL Server hat einen Typ namens
datetimeoffset
, der allesTIMESTAMP WITH TIMEZONE
kann, außer die tatsächliche Zeitzone zu speichern. Sie können lediglich einen Versatz von UTC (z. B.2013-05-04 12:34:56 -5:00
) speichern. Dies bedeutet, dass Sie diesen vor dem Speichern anhand der Zeitzone ermitteln müssen.quelle
Angenommen, Sie verwenden .NET Framework 4.0 oder höher, ist TimeZoneInfo genau das, was Sie brauchen.
Speichern Sie alle Datumswerte in der Datenbank im UTC-Format. Verwenden Sie entweder den ID-Wert oder das Ergebnis von ToSerializedString () für jeden Client, um ein TimeZoneInfo-Objekt zu erstellen und gespeicherte Daten zur Anzeige in das lokale Format zu konvertieren.
quelle
Sie haben gesagt, Sie möchten eine Zeitzone für jede Adresse in Ihrer Datenbank speichern, aber Sie haben nicht gesagt, was Sie damit machen möchten. Das Speichern von etwas in einer Datenbank ist selten ein Selbstzweck.
In jedem Fall würde ich versuchen, die TZ-Datenbank , auch bekannt als Olsen-Datenbank, entweder direkt oder mit einer Standard-Software zu verwenden, die TZ integriert. Sie können eine Zeitzone einfach als Zeichenfolge speichern, um auf einen der TZ DB-Einträge zu verweisen , z. B. "Afrika / Kampala" oder "Europa / Paris".
quelle