타임존 시간(+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;
/
타임존명으로 도시코드 조회
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;
/