Frage

Ich möchte in einem SQL Server 2005-Datenbank einen ein c # Datetime Wert speichern.

SQL 2008 hat dies als eine integrierte-Typ, aber SQL Server 2005 nicht.

Die Datetime Struktur hat eine wich Datetime-Wert I als Datum- und speichern, eine eine Offset-Eigenschaft (vom Typ Timespan). Da dies die Zone relativ zur UTC-Zeit ist, vermutlich ist es usally bei einer ganzen Anzahl von Stunden oder Halb Stunden.

Vorschläge, wie dies am besten in einem SQL Server speichern 2005-Datenbank?

War es hilfreich?

Lösung

Es ist keine gute Idee, anzunehmen, dass ein Versatz eine Anzahl von Stunden oder Halbstunden - es gibt sicherlich Viertelstunde Zeitzonen um

.

Mit Millisekunden für den Offset wahrscheinlich die flexibelste, aber ich würde behaupten, dass Minuten viel einfacher zu lesen ist. Wenn Sie sich jemals an den „rohen“ Daten in der Datenbank gehen zu sehen, es ist einfacher, Wert 60 = 1 Stunde als 3600000. verstehen kann ich mich nicht vorstellen wirklich Sie Fraktionen von Minuten als Offset zu müssen.

Andere Tipps

Normalisieren aller DateTimeOffsets zu einem gemeinsamen Offset, vorzugsweise UTC. Dann speichern Sie einfach die Datetime wie gewohnt. Bei der Extraktion wiederherstellen des Offset, die eine Konstante sein sollte. Dies nicht behält den Offset-Ursprung, aber der Offset ohnehin auf eine Zeitzone nicht eindeutig.

Wenn Sie tatsächlich das Datum / Zeit Herkunft wissen müssen, dann würden Sie brauchen eine Zeitzoneninformationen zu speichern. Dies liegt daran, ein einfacher Offset nicht eindeutig den Ursprung einer Zeit darstellen. Bitte beachten Sie (die etwas verwirrend) MSDN-Dokumentation über Wahl zwischen Datum- und Datetime und Timezone .

Speichern des Datetime als Datetime und der Offset als Millisekunden (bigint)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top