데이터베이스.가이드
오라클 데이터베이스에서는 다양한 장소에서 시간대를 설정할 수 있습니다. 다음은 오라클을 사용할 때 시간대를 변경하는 네 가지 방법입니다.
데이터베이스 시간대 설정
데이터베이스를 생성할 때 데이터베이스 시간대를 설정할 수 있습니다. 이렇게 하려면CREATE DATABASE문의SET TIME_ZONE절을 사용하십시오.
예:
CREATE DATABASE mySampleDb...SET TIME_ZONE='Australia/Sydney';
이 경우 시간대 영역 이름을 사용했습니다. 시스템에서 유효한 지역 이름의 전체 목록을 가져오려면 오라클 데이터베이스에서 유효한 시간대 목록을 반환하는 방법을 참조하십시오.
또는 실제 표준 시간대 오프셋을 사용할 수 있습니다:
CREATE DATABASE mySampleDb...SET TIME_ZONE='+10:00';
데이터베이스를 만들 때 표준 시간대를 명시적으로 설정하지 않으면 기본적으로 서버 운영 체제의 표준 시간대로 설정됩니다.
데이터베이스의 현재 표준 시간대 설정을 변경할 수도 있습니다. 이렇게 하려면ALTER DATABASE문을 사용하십시오.
예:
ALTER DATABASE mySampleDb...SET TIME_ZONE='Australia/Sydney';
데이터베이스 표준 시간대는TIMESTAMP WITH LOCAL TIME ZONE열에 대해서만 관련이 있습니다. 또한 데이터베이스 표준 시간대를 세계 협정시(0)로 설정하는 것이 좋습니다:00)데이터 변환을 방지하고 데이터가 데이터베이스간에 전송 될 때 성능을 향상시킬 수 있습니다.
세션 시간대 설정
세션 시간대를 데이터베이스 시간대와 독립적으로 설정할 수 있습니다. TIMESTAMP WITH LOCAL TIME ZONE데이터를 반환하면 현재 세션의 표준 시간대에 반환됩니다.
세션 시간대는TIMESTAMP값이TIMESTAMP WITH TIME ZONE또는TIMESTAMP WITH LOCAL TIME ZONE데이터 형식으로 변환될 때도 적용됩니다.
세션 수준에서 시간대를 설정하는 몇 가지 작업을 수행할 수 있습니다.
환경 변수
ORA_SDTZ환경 변수를 사용하여 세션 시간대를 설정할 수 있습니다. 이 값은 다음 값으로 설정할 수 있습니다:
- 운영 체제 현지 시간대(
'OS_TZ') - 데이터베이스 시간대(
'DB_TZ') - 절대 오프셋(예:
'-04:00') - 시간대 지역 이름(예:
'America/St_Kitts')
다음은 유닉스 환경에서 이 환경 변수를 설정하는 몇 가지 예입니다:
% setenv ORA_SDTZ 'OS_TZ'% setenv ORA_SDTZ 'DB_TZ'% setenv ORA_SDTZ 'America/St_Kitts'% setenv ORA_SDTZ '-04:00'
ORA_SDTZ변수의 기본값은'OD_TZ'입니다. 이 값은 변수가 설정되지 않았거나 잘못된 값으로 설정된 경우에 사용됩니다.
세션 변경 명령문
ALTER SESSION명령문의SET TIME_ZONE절을 사용하여 특정 세션의 표준 시간대를 변경할 수 있습니다.
TIME_ZONE은 다음 값으로 설정할 수 있습니다:
- 세션이 시작된 기본 현지 시간대(
local) - 데이터베이스 시간대(
dbtimezone) - 절대 오프셋(예:
'-04:00') - 시간대 지역 이름(예:
'Canada/Eastern')
다음은TIME_ZONE을 이러한 값으로 설정하는 예입니다:
ALTER SESSION SET TIME_ZONE=local;ALTER SESSION SET TIME_ZONE=dbtimezone;ALTER SESSION SET TIME_ZONE='Canada/Eastern';ALTER SESSION SET TIME_ZONE='-04:00';
SESSIONTIMEZONE기능으로 현재 세션의 시간대를 확인할 수 있습니다.
예:
SELECT SESSIONTIMEZONE FROM DUAL;
결과:
Australia/Brisbane
내 경우에는 세션 시간대가 호주/브리즈번으로 설정됩니다.
시간대 절
날짜/시간 식에는AT LOCAL절 또는AT TIME ZONE절이 포함될 수 있습니다. AT LOCAL절을 포함하면 결과가 현재 세션 표준 시간대에 반환됩니다. AT TIME ZONE절을 포함하는 경우 표준 시간대는 다음 중 하나일 수 있습니다:
- 표준 시간대 오프셋
- 표준 시간대 영역 이름
-
DBTIMEZONE(이 함수는 데이터베이스의 표준 시간대를 반환합니다) -
SESSIONTIMEZONE(이 함수는 현재 세션의 표준 시간대를 반환합니다) - 유효한 표준 시간대 형식의 문자열을 반환하는 식입니다.
예:
SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '-04:00') AT TIME ZONE '+12:00'FROM DUAL;
결과:
02/JAN/30 04:30:35.000000000 AM +12:00
이 경우FROM_TZ()함수를 사용하여 타임 스탬프 값과 시간대를TIMESTAMP WITH TIME ZONE값으로 변환했습니다. 그런 다음AT TIME ZONE절을 사용하여 다른 시간대를 지정했습니다.
이 시간을 제외하고 동일한 예가 있습니다AT LOCAL:
SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '-04:00') AT LOCALFROM DUAL;
결과:
02/JAN/30 02:30:35.000000000 AM AUSTRALIA/BRISBANE




