본문 바로가기
통계프로그램 비교 시리즈/오라클함수 비교(R & Python)

NEW_TIME 오라클 함수 [Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table]

by 기서무나구물 2021. 12. 6.

포스팅 목차

    * 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크


    [ NEW_TIME Oracle Function ]

     


    NEW_TIME 함수는 timezone1에 속한 시간대(날짜/시간값)를 timezone2에 해당하는 시간대(날짜/시간값)으로 변환한다. NEW_TIME함수는 시간대 timezone1의 일자와 시간을 시간대 timezone2의 일자와 시간으로 반환한다. 이 함수를 이용하기 전에, 24-hour time을 표시하기 위해 NLS_DATE_FORMAT 파라미터를 설정할 필요가 있다. 반환 타입은 date의 데이터 형식과 관계없이 항상 DATE이다.

     

     


    1. Oracle(오라클)

    다음 예제는 주어진 태평양 표준시를 동일한 시간대의 대서양 표준시로 전환한다.

     

    Oracle Programming
    ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
    
    SELECT NEW_TIME(TO_DATE('11-10-09 01:23:45', 'MM-DD-YY HH24:MI:SS'),
                    'AST', 'PST') "New Date and Time" FROM DUAL;

     

    Results
    Statement processed.
    ---------------------
    
    New Date and Time
    ---------------------
    09-NOV-2009 21:23:45

     


    2. Python Pandas(파이썬)

    • [Python Datetime TZ 참고] Source code for datetime_tz.pytz_abbr [링크]

     

    • AST(America/Halifax)을 PST(‘US/Pacific’) 시간대로 변경

    다음은 US/Pacific 시간대의 시간과 동일한 America/Halifax 시간대 시간으로 변환하여 출력한다.

     

    Python Programming
    import pandas as pd
    base_datetime = pd.Series(['2009-11-10 01:23:45'])
    base_datetime = pd.to_datetime(base_datetime)
    display(base_datetime)
    
    chagne_datetime = base_datetime.dt.tz_localize("America/Halifax").dt.tz_convert('US/Pacific')
    chagne_datetime

     

    Results
    0   2009-11-10 01:23:45
    dtype: datetime64[ns]
    
    
    
    
    
    0   2009-11-09 21:23:45-08:00
    dtype: datetime64[ns, US/Pacific]

     


    astimezone() 함수

     

    Python Programming
    from datetime import datetime
    from pytz import timezone
    
    utc_time = datetime.now(timezone('UTC'))
    display(utc_time)
    display(utc_time.astimezone(timezone('Asia/Seoul')))
    
    display(datetime.now(timezone('Asia/Seoul')).strftime('%Y-%m-%d %H:%M:%S'))
    
    display(utc_time.astimezone(timezone('America/New_York')))
    
    display(datetime.now(timezone('America/New_York')).strftime('%Y-%m-%d %H:%M:%S'))

     


    datetime() 함수

     

    Results
    datetime.datetime(2021, 2, 4, 15, 46, 42, 186659, tzinfo=<UTC>)
    
    
    
    datetime.datetime(2021, 2, 5, 0, 46, 42, 186659, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)
    
    
    
    '2021-02-05 00:46:42'
    
    
    
    datetime.datetime(2021, 2, 4, 10, 46, 42, 186659, tzinfo=<DstTzInfo 'America/New_York' EST-1 day, 19:00:00 STD>)
    
    
    
    '2021-02-04 10:46:42'

     

     

     


    3. R Programming (R Package)

     

    as.POSIXct() 함수

     

    R Programming
    %%R
    
    base_datetime <- as.POSIXct("2009-11-10 01:23:45", tz="America/Halifax")  
    attributes(base_datetime)$tzone <- "US/Pacific"  
    base_datetime  

     

    Results
    [1] "2009-11-09 21:23:45 PST"

     


    lubridate::with_tz() 함수

     

    R Programming
    %%R
    
    base_datetime <-  lubridate::ymd_hms("2009-11-10 01:23:45", tz = "America/Halifax")
    lubridate::with_tz(base_datetime, "US/Pacific")

     

    Results
    [1] "2009-11-09 21:23:45 PST"

     


    as.POSIXct() 함수

     

    R Programming
    %%R
    
    base_datetime <- ymd_hms("2009-11-10 01:23:45", tz = "America/Halifax")
    
    # as.POSIXct : KST 시간대
    print(as.POSIXct(format(base_datetime, tz="US/Pacific",usetz=TRUE)))
    
    format(base_datetime, tz="US/Pacific",usetz=TRUE)

     

    Results
    [1] "2009-11-09 21:23:45 KST"
    [1] "2009-11-09 21:23:45 PST"

     


    force_tz : 시간은 동일한 상태에서 시간대만 변경

     

    R Programming
    %%R
    
    base_datetime <- as.POSIXct("2009-11-10 01:23:45", tz="America/Halifax") 
    
    force_tz(base_datetime, tzone = "US/Pacific")

     

    Results
    [1] "2009-11-10 01:23:45 PST"

     

     

     


    4. R Dplyr Package

     

    R Programming
    %%R
    
    dplyr::

     

     


    5. R sqldf Package

     

    R Programming
    %%R
    
    sqldf(" select strftime('%Y-%m-%d %H:%M:%f +08:00','2009-11-10 01:23:45 +04:00') time_zone ")

     

    Results
                           time_zone
    1 2009-11-09 21:23:45.000 +08:00

     

     

     


    6. Python pandasql Package

     

    strftime() 함수

     

    Python Programming
    ps.sqldf(" select strftime('%Y-%m-%d %H:%M:%f +08:00','2009-11-10 01:23:45 +04:00') time_zone ")

     

    Results
    	time_zone
    0	2009-11-09 21:23:45.000 +08:00

     

     

     


    7. R data.table Package

     

     


    Gate at Mungyeong (https://unsplash.com/photos/dwd10kdmM2c)

     

      --------------------------------------------  

     

     

    [Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table] 오라클 함수와 R & Python 비교 사전 목록 링크

     

    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 링크
    반응형

    댓글