2012-12-16 2 views
2

우리는 Oracle 11g를 사용하고 있으며 시간대가없는 테이블 (TIMESTAMP로 간단히 정의 됨)이있는 테이블이 있습니다. 표준 시간대는 다른 열에 기록됩니다.타임 스탬프의 시간대를 Oracle DB에서 비교하기 위해 변환하는 방법은 무엇입니까?

타임 존을 고려하면서 '최대'기능을 사용할 수 있기를 원합니다.
아마도 시간대를 쉽게 변환 할 수있는 함수가있을뿐입니다.

나는 같은 것을 할 수 있도록하려면 :

SELECT max(covert_to_timezone(my_timestamp, my_timezone, 'GMT')) FROM my_table 

내가 어떻게 할 수 있습니까?

SELECT max(from_tz(my_timestamp, my_timezone) at time zone '0:00') FROM my_table 

업데이트 : 당신이 원하는 경우

==================

솔루션 : Ajith Sasidharan의 대답에 따르면 날짜를 비교하기 위해, 간단하게 사용하는 '캐스팅'Btw는

SELECT max(from_tz(cast(my_date as timestamp), my_timezone) at time zone '0:00') FROM my_table 

을, 지금은 'ORA 01878'오류를 가지고, 우리의 테이블을 의미하는 것은 유효하지 않은 시간을 포함 (DST 똥) .

답변

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 
+0

작품 같아요,하지만 난 내 질문을 수정하고 불필요한 데이터를 포함했기 때문에 (나를 위해) 답을 추가합니다. – wafwaf

관련 문제