5

SQL Server 2005データベースにaac#DateTimeOffset値を保存したいと思います。

Sql 2008には組み込み型としてこれがありますが、SQLServer2005にはありません。

DateTimeOffset構造体には、(TimeSpanタイプの)OffsetプロパティであるDateTimeとして格納するDateTime値があります。これはUTCを基準にしたタイムゾーンであるため、通常は整数時間または30分です。

これをSQLServer2005データベースに保存するのに最適な方法に関する提案はありますか?

4

3 に答える 3

7

オフセットが数時間または30分であると想定するのは良い考えではありません。確かに15分のタイムゾーンがあります。

オフセットにミリ秒を使用するのがおそらく最も柔軟ですが、分ははるかに読みやすいと思います。データベース内の「生の」データを見る場合は、3600000よりも60=1時間の値を理解する方が簡単です。オフセットとして実際に数分の1分が必要なことは想像できません。

于 2008-10-12T15:42:16.350 に答える
4

すべてのDateTimeOffsetを共通のオフセット(できればUTC)に正規化します。次に、通常どおりDateTimeを保存します。抽出時にオフセットを復元します。オフセットは一定である必要があります。これは元のオフセットを保持しませんが、オフセットはとにかくタイムゾーンに対してあいまいです。

実際に日付/時刻の発信元を知る必要がある場合は、タイムゾーン情報を保存する必要があります。これは、単純なオフセットでは時間の起点を明確に表すことができないためです。DateTime、DateTimeOffset、およびTimeZoneInfoの選択については、(やや紛らわしい)MSDNドキュメントを参照してください。

于 2008-10-14T22:44:46.697 に答える
1

日時を日時として、オフセットをミリ秒として保存します(bigint)

于 2008-10-12T15:36:34.693 に答える