2

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 のたわごと)。

4

1 に答える 1

2

このような関数が必要だと思います::

select to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
    at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM TZD') as localtime
    from table
于 2012-12-16T16:01:41.453 に答える