"타임존 함수"의 두 판 사이의 차이
DB CAFE
(→타임존명으로 도시코드 조회) |
|||
(다른 사용자 한 명의 중간 판 3개는 보이지 않습니다) | |||
22번째 줄: | 22번째 줄: | ||
== 타임존명으로 도시코드 조회 == | == 타임존명으로 도시코드 조회 == | ||
<source lang=sql> | <source lang=sql> | ||
− | CREATE OR REPLACE FUNCTION | + | CREATE OR REPLACE FUNCTION XXX."FN_GET_CTY_TZ_TM" ( inDate DATE /* 변환 할 날짜 */ |
, inToTimezone VARCHAR2 /* 타임존 이름 Timezone ID ex) 'Asia/Seoul' */ | , inToTimezone VARCHAR2 /* 타임존 이름 Timezone ID ex) 'Asia/Seoul' */ | ||
, inFromTimezone VARCHAR2 DEFAULT 'Asia/Seoul' /* inFromTimezone에서 inToTimezone으로 변환 GMT ex) 'Asia/Seoul' */ | , inFromTimezone VARCHAR2 DEFAULT 'Asia/Seoul' /* inFromTimezone에서 inToTimezone으로 변환 GMT ex) 'Asia/Seoul' */ | ||
53번째 줄: | 53번째 줄: | ||
/ | / | ||
</source> | </source> | ||
+ | |||
+ | [[category:oracle]] |
2020년 6월 24일 (수) 17:38 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 타임존 시간(+9,서울인경우)으로 도시코드 조회[편집]
CREATE OR REPLACE FUNCTION FN_GET_CTY_TM ( inDate DATE /* 변환 날짜 */
, inTZNum NUMBER DEFAULT 0 /* 타임존별 시간 +,- */
)
RETURN DATE IS
/*
FN_GET_CTY_TM(SYSDATE,'+9') -- 서울 기준
FN_GET_CTY_TM(SYSDATE,'+7') -- 인도네시아/자카르타
*/
BEGIN
RETURN inDate + ((inTZNum-9)/24);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(' FN_GET_CTY_TM() ERROR:' || SQLERRM );
RETURN NULL;
END FN_GET_CTY_TM;
/
2 타임존명으로 도시코드 조회[편집]
CREATE OR REPLACE FUNCTION XXX."FN_GET_CTY_TZ_TM" ( inDate DATE /* 변환 할 날짜 */
, inToTimezone VARCHAR2 /* 타임존 이름 Timezone ID ex) 'Asia/Seoul' */
, inFromTimezone VARCHAR2 DEFAULT 'Asia/Seoul' /* inFromTimezone에서 inToTimezone으로 변환 GMT ex) 'Asia/Seoul' */
)
RETURN DATE IS
/*
* Example:
- FN_GET_CTY_TZ_TM(SYSDATE, 'America/New_York' ) : SYSDATE
- FN_GET_CTY_TZ_TM(SYSDATE, 'America/New_York', 'Asia/Seoul' ) : SYSDATE
*/
vInFromTimezone VARCHAR(20) := NULL;
BEGIN
vInFromTimezone := inFromTimezone;
IF inDate IS NULL THEN
RETURN NULL;
ELSIF inToTimezone IS NULL THEN
RETURN NULL;
ELSIF vInFromTimezone IS NULL THEN
vInFromTimezone := 'Asia/Seoul';
END IF;
RETURN FROM_TZ( CAST( inDate AS TIMESTAMP ) , vInFromTimezone ) AT TIME ZONE inToTimezone ;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(' RTIS.FN_GET_CTY_TZ_TM() ERROR:' || SQLERRM );
RETURN NULL;
END FN_GET_CTY_TZ_TM;
/