SQL Server 2005データベースにc#DateTimeOffset値を保存する
-
10-07-2019 - |
質問
SQL Server 2005データベースにc#DateTimeOffset値を保存したい。
Sql 2008にはこれが組み込み型としてありますが、SQL Server 2005にはありません。
DateTimeOffset構造体には、DateTimeとして保存するDateTime値があり、(TimeSpan型の)Offsetプロパティです。これはUTCを基準としたタイムゾーンであるため、通常は整数時間または半時間の通常の時間です。
これをSQL Server 2005データベースに保存する最善の方法に関する提案
解決
オフセットを数時間または30分と想定するのは得策ではありません-確かに、周囲には15時間のタイムゾーンがあります。
オフセットにミリ秒を使用するのがおそらく最も柔軟ですが、分を読む方がはるかに簡単だと思います。 「生」を確認する場合は、データベースのデータの場合、値60 = 1時間は3600000よりも簡単に理解できます。オフセットとして分単位が本当に必要なのは想像できません。
他のヒント
すべてのDateTimeOffsetsを共通のオフセット(できればUTC)に正規化します。次に、通常どおりDateTimeを保存します。抽出時に、オフセットを復元します。これは定数でなければなりません。これは元のオフセットを保持しませんが、とにかくオフセットはタイムゾーンに対してあいまいです。
実際に日付/時刻の起源を知る必要がある場合は、タイムゾーン情報を保存する必要があります。これは、単純なオフセットが時間の起源を明確に表すことができないためです。 DateTime、DateTimeOffset、およびTimeZoneInfoの選択に関する(やや紛らわしい)MSDNドキュメントを参照してください。 。
datetimeをdatetimeとして、オフセットをミリ秒(bigint)として保存します