SQL Server - 日付フィールドを UTC に変換する 質問する

SQL Server - 日付フィールドを UTC に変換する 質問する

以前は日付/時刻が現地時間で保存されていたため、最近システムを更新して日付/時刻を UTC で記録するようにしました。

ConvertTimeローカルに保存されているすべての日付/時刻を UTC に変換する必要があります。.NET の方法に似た組み込み関数があるかどうか知りたいです。

私は、これを実行するためのユーティリティ アプリを作成する必要を避けようとしています。

助言がありますか?

ベストアンサー1

上記のコードは機能しないと思います。その理由は、現在の日付の現地時間と UTC 時間の差に依存するからです。たとえば、ここカリフォルニアでは現在 PDT (太平洋夏時間) を使用していますが、この時間と UTC 時間の差は 7 時間です。提供されているコードを今すぐ実行すると、変換するすべての日付に 7 時間が追加されます。ただし、過去に保存された日付または将来の日付を変換し、その日付が夏時間中でない場合は、正しいオフセットが 8 であるにもかかわらず、7 が追加されます。要するに、現在の日付だけを見ても、タイム ゾーン間で日付/時刻を正しく変換することはできません (夏時間に従わない UTC を含む)。変換する日付自体について、その日付に夏時間が適用されていたかどうかを考慮する必要があります。さらに、夏時間と標準時間が変わる日付自体も変更されています (ジョージ ブッシュは、米国政権時代に日付を変更しました)。つまり、getdate() や getutcdate() を参照するソリューションはどれも機能しません。変換する実際の日付を解析する必要があります。

おすすめ記事