복붙노트

[SQL] DATE에 시간대와 오라클 변환 TIMESTAMP

SQL

DATE에 시간대와 오라클 변환 TIMESTAMP

00 (유럽 / 모스크바)와 형식 YYYY-MM-DD "T"HH24에서 문자열을 변환 할 필요가 : MI : SSTZH : 나는 시간대 04와 DB가 오라클 11g의 DATE 데이터 유형에 TZM합니다.

11 : 31 + 02 : 즉, 나는 문자열 2013-11-08T10이 00 나는 DATE 데이터 형식으로 변환 할 (로컬 DB 시간대 04에서 : 00 (유럽 / 모스크바)).

대한 문자열 2013-11-08T10 : 11 : 31 + 02 : (00 유럽 : 00 내 원하는 변환은 날짜 2013년 11월 8일 12시 11분 31초 (즉, 시간의 현지 시간대 변환과 04에 함께 DATE 데이터 형식을 반환해야 /모스크바)). 스트링의 다른 시간대 및 +02 수있다 : 문자열 00 위 단지 예이다.

나는 TIMESTAMP 데이터 유형이 일을 시도하지,하지만 시간대 변환에 ​​더 성공.

해결법

  1. ==============================

    1.to_timestamp_tz ()시에 지역 구절이 시간대 데이터 형식의 타임 스탬프의 값에 문자열 리터럴을 변환 할 수 있습니다와 기능 :

    to_timestamp_tz ()시에 지역 구절이 시간대 데이터 형식의 타임 스탬프의 값에 문자열 리터럴을 변환 할 수 있습니다와 기능 :

    SQL> with t1(tm) as(
      2    select '2013-11-08T10:11:31+02:00' from dual
      3  )
      4  select to_timestamp_tz(tm, 'yyyy-mm-dd"T"hh24:mi:ss TZH:TZM')
      5           at time zone '+4:00'         as this_way
      6       , to_timestamp_tz(tm, 'yyyy-mm-dd"T"hh24:mi:ss TZH:TZM')
      7           at time zone 'Europe/Moscow' as or_this_way
      8    from t1
      9  /
    

    결과:

    THIS_WAY                            OR_THIS_WAY
    ----------------------------------------------------------------------------
    2013-11-08 12.11.31 PM +04:00       2013-11-08 12.11.31 PM EUROPE/MOSCOW
    

    그리고, 우리는 날짜 데이터 형식의 값을 생성 캐스트 () 함수를 사용하여 :

    with t1(tm) as(
      select '2013-11-08T10:11:31+02:00' from dual
    )
    select cast(to_timestamp_tz(tm, 'yyyy-mm-dd"T"hh24:mi:ss TZH:TZM') 
             at time zone '+4:00' as date)   as this_way  
         , cast(to_timestamp_tz(tm, 'yyyy-mm-dd"T"hh24:mi:ss TZH:TZM') 
             at time zone 'Europe/Moscow' as date) as or_this_way
      from t1
    
    This_Way             Or_This_Way 
    ------------------------------------------
    2013-11-08 12:11:31  2013-11-08 12:11:31 
    

    시간대 절과 to_timestamp_tz () 함수에서 더에 대해 알아보십시오.

  2. ==============================

    2.

    SELECT
    CAST((FROM_TZ(CAST(timezonefield AS TIMESTAMP),'GMT') AT TIME ZONE 'CET') AS DATE) 
    FROM table;
    

    중부 유럽 시간에 최신 GMT의 타임 스탬프로 변환

  3. ==============================

    3.당신이 "SYSDATE"와 동기화 날짜로 변환하는 시간대와 타임 스탬프를 원하는 경우 다음 다음을 사용 :

    당신이 "SYSDATE"와 동기화 날짜로 변환하는 시간대와 타임 스탬프를 원하는 경우 다음 다음을 사용 :

    select CAST(to_timestamp_tz('2013-11-08T10:11:31-02:00',
    'yyyy-mm-dd"T"hh24:mi:sstzh:tzm') at time zone to_char(systimestamp,
    'tzh:tzm') AS DATE)
    from dual
    
  4. ==============================

    4.최신 캐스트 타임 스탬프 :

    최신 캐스트 타임 스탬프 :

    캐스트 (날짜로 registrationmaster.Stamp5DateTime)> = '05 -05-2018 'AND 캐스트 (날짜로 registrationmaster.Stamp5DateTime) <= '05 -05-2018 '

  5. from https://stackoverflow.com/questions/20089859/oracle-convert-timestamp-with-timezone-to-date by cc-by-sa and MIT license