日付を UTC 日付として保存した日付列 (その名前は start_date と言います) を持つ Oracle テーブルがあります。タイムゾーンを格納する別の列があります (「America/Los_Angeles」など)。私の要件は、タイムゾーン列に保存されているタイムゾーンに対応するタイムスタンプを含む日付列を表示する必要があることです。
最初に、utc_date とタイムゾーンを受け取り、以下のように日付を返す関数を作成しました。
return utc_date + (SUBSTR (TZ_OFFSET (timezone), 1, 1) || '1')
* TO_DSINTERVAL (
'0 '
|| SUBSTR (TZ_OFFSET (timezone), 2, 5)
|| ':00');
しかし、私は欠陥に気づきました。現在の時刻に基づいてオフセットを計算します。したがって、Los_Angeles に対して -00 08:00:00.000000 が返されます。ただし、utc_date に格納された日付が夏時間が適用された日付である場合、tz_offset 値は無効になります。誰かが私にこの問題にどのように取り組むことができるかを教えてもらえますか?