UTC とデータが保存されているタイムゾーンの間のオフセットを知っていると仮定すると、それは非常に簡単です:
DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);
あなたがグリニッジのどちら側にいるかはわかりません.
もちろん、夏時間が適用されるタイムゾーンにいる場合、これはさらに複雑になります。この場合、カレンダー テーブルを使用するなど、より広範なソリューションが必要になる場合があります。たとえば、George Bush がアメリカの DST 規則を変更する前にデータが拡張されている場合、これは特に複雑です。私は 役に立つかもしれない昔の記事 ;最新のシリーズはこちら:
- SQL Server でタイム ゾーン間の変換を処理する - パート 1
- SQL Server でタイム ゾーン間の変換を処理する - パート 2
- SQL Server でタイム ゾーン間の変換を処理する - パート 3
また、スプリング フォワード/フォール バックの日の午前 0 時から午前 2 時の間にデータが該当する場合、切り替え日であるため変更するのが正しいのか、変更しないのが正しいのかわかりません。午前 2 時前だからです。