Oracle 11gを使用しており、タイムゾーンを含まないタイムスタンプ列を持つテーブルがあります(単にTIMESTAMPとして定義されています)。タイムゾーンは別の列に書かれています。
タイムゾーンを考慮しながら「max」関数を使用できるようにしたい。
おそらくタイムゾーンを簡単に変換する機能があり、私はそれを知りません。
私はこのようなことができるようにしたい:
SELECT max(covert_to_timezone(my_timestamp, my_timezone, 'GMT')) FROM my_table
どうやってやるの?
==================
解決策: Ajith Sasidharan の回答によると:
SELECT max(from_tz(my_timestamp, my_timezone) at time zone '0:00') FROM my_table
更新:日付を比較したい場合は、単純に「キャスト」を使用します。
SELECT max(from_tz(cast(my_date as timestamp), my_timezone) at time zone '0:00') FROM my_table
ところで、「ORA 01878」エラーが発生しました。これは、テーブルに無効な時間が含まれていることを意味します (DST のたわごと)。