데이터베이스.가이드

오라클 데이터베이스에서는 다양한 장소에서 시간대를 설정할 수 있습니다. 다음은 오라클을 사용할 때 시간대를 변경하는 네 가지 방법입니다.

데이터베이스 시간대 설정

데이터베이스를 생성할 때 데이터베이스 시간대를 설정할 수 있습니다. 이렇게 하려면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

Leave a Reply

이메일 주소는 공개되지 않습니다.