포스팅 목차
* 파이썬 & R 패키지 호출 및 예제 데이터 생성 링크
[ NEW_TIME Oracle Function ]
NEW_TIME 함수는 timezone1에 속한 시간대(날짜/시간값)를 timezone2에 해당하는 시간대(날짜/시간값)으로 변환한다. NEW_TIME함수는 시간대 timezone1의 일자와 시간을 시간대 timezone2의 일자와 시간으로 반환한다. 이 함수를 이용하기 전에, 24-hour time을 표시하기 위해 NLS_DATE_FORMAT 파라미터를 설정할 필요가 있다. 반환 타입은 date의 데이터 형식과 관계없이 항상 DATE이다.
- 함수 설명 : NEW_TIME 오라클 함수 링크
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
- 시간대(Timezone) : https://ko.wikipedia.org/wiki/%EC%8B%9C%EA%B0%84%EB%8C%80
- 대서양 표준시(AST) is currently UTC - 4 hours.
- 태평양 표준시(PST) is currently UTC - 8 hours.
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
--------------------------------------------
[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 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 링크 |
반응형
댓글