PostgreSQL 서버에서 시간대 변환

Bilal Shahid 2024년2월15일
  1. PostgreSQL 서버에서 시간대 변환
  2. timezone() 함수 및 시간대 변환을 위한 용도
  3. SQL 쿼리를 사용하여 타임스탬프 값을 다른 시간대로 변환
  4. 시간대를 변환하는 중요한 SQL 문
PostgreSQL 서버에서 시간대 변환

테이블에 저장된 타임스탬프 값을 PostgreSQL의 다른 시간대로 변환하시겠습니까? 이 문서에서는 저장된 타임스탬프 값을 다른 시간대로 변환하는 절차를 설명합니다.

PostgreSQL 서버에서 시간대 변환

하나의 타임스탬프 값을 다른 시간대로 변환하는 방법에는 여러 가지가 있습니다. 이 기사에서 논의할 두 가지 방법이 있습니다.

  1. timezone() 함수 사용
  2. SQL 쿼리 사용

타임스탬프를 한 시간대에서 다른 시간대로 변환하기 위해 이들 중 하나를 따를 수 있습니다.

timezone() 함수 및 시간대 변환을 위한 용도

PostgreSQL 서버는 작업을 빠르고 효율적으로 수행하는 데 도움이 되는 다양한 사용자 기능을 제공합니다. 그러나 timezone() 함수를 사용하기 전에 자세히 살펴보겠습니다.

timezone() 함수는 하나의 타임스탬프 값을 다른 시간대로 변환하는 데 사용됩니다. timezone() 함수의 구문은 다음과 같습니다.

timezone(zone, timestamp)

위에 표시된 대로 timezone() 함수는 두 개의 인수를 사용합니다. 첫 번째 인수 zone은 타임스탬프 인수를 변환하려는 시간대를 나타냅니다.

두 번째 인수 timestamp는 다른 시간대로 변환하려는 타임스탬프 값을 나타냅니다.

timezone() 함수의 반환 값은 타임스탬프 값에 따라 다릅니다. 원래 타임스탬프 값에 시간대가 포함된 경우 함수는 다른 값을 반환합니다.

반면에 타임스탬프 값 DOES NOT에 시간대가 없으면 반환되는 값이 달라집니다. 아래의 코드 예제를 통해 이해해 봅시다.

시간대가 있는 타임스탬프를 포함하는 예제 코드

이 섹션의 예제에서는 timezone() 함수를 사용합니다. 여기서 타임스탬프 인수에는 시간대가 포함됩니다. 다음은 PostgreSQL의 SQL 문입니다.

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00+00');

timezone() 함수는 두 번째 인수에 제공된 타임스탬프 값을 첫 번째 인수에 지정된 지정된 시간대로 변환합니다.

반환 값은 시간대가 없습니다. 따라서 위에서 언급한 쿼리의 결과는 다음과 같습니다.

postgresql 서버에서 시간대 변환 - 이미지 1

이 예는 입력 타임스탬프 값의 시간대를 변경합니다.

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00+01');

출력:

postgresql 서버의 시간대 변환 - 이미지 2

"timestamp with timezone"인수와 함께 timezone() 함수를 사용하고 타임스탬프로 시간대를 지정하지 않는다고 가정합니다. 그런 다음 인수의 원래 타임스탬프가 현지 시간대로 변환됩니다.

SELECT timezone('PST', timestamp with time zone '2020-10-25 00:00:00');

출력:

postgresql 서버의 시간대 변환 - 이미지 3

반환된 타임스탬프가 11시간 빠르다는 것을 알 수 있습니다. 즉, 내 현지 시간대가 PST 시간대보다 11시간 뒤인 것을 의미합니다.

사용된 시간대 오프셋을 보려면 다음 쿼리를 실행하십시오.

SELECT timestamp with time zone '2020-10-25 00:00:00';

출력:

postgresql 서버의 시간대 변환 - 이미지 4

시간대 없이 타임스탬프를 포함하는 예제 코드

“시간대 없는 타임스탬프"라는 인수를 사용하여 동일한 예제를 실행할 수 있습니다. 결과는 타임스탬프에 시간대 오프셋이 포함된 경우에도 현재 시간대 설정을 사용하여 원래 타임스탬프를 변환합니다.

함수의 반환 값에는 추가된 시간대 오프셋이 포함됩니다. 다음은 시간대 오프셋을 포함하지 않는 PostgreSQL의 쿼리입니다.

SELECT timezone('PST', timestamp without time zone '2020-10-25 00:00:00+00');

따라서 위에서 언급한 쿼리의 결과는 다음과 같습니다.

postgresql 서버의 시간대 변환 - 이미지 5

다음 예에는 시간대 오프셋이 포함되어 있습니다.

SELECT timezone('PST', timestamp without time zone '2020-10-25 00:00:00+12');

위 쿼리의 결과는 시간대 오프셋 없이 얻은 결과와 동일합니다.

postgresql 서버의 시간대 변환 - 이미지 5

"timestamp without timezone" 인수의 개념을 이해하려면 아래 쿼리를 참조하세요.

SELECT timestamp without time zone '2020-10-25 00:00:00+12';

출력:

postgresql 서버에서 시간대 변환 - 이미지 6

참고: timezone() 함수는 다양한 인수와 함께 사용할 수 있습니다. localtimestamp 또는 current_timestamp 인수와 함께 timezone() 함수를 사용해 보십시오. 인수 “timestamp with/without timezone"은 “time with/without timezone"과 같은 시간 값과 함께 사용할 수도 있습니다.

SQL 쿼리를 사용하여 타임스탬프 값을 다른 시간대로 변환

여기서는 타임스탬프 값을 함수 없이 다른 시간대로 변환하기 위해 PostgreSQL에서 실행할 수 있는 몇 가지 SQL 문에 대해 설명합니다.

첫 번째 쿼리는 타임스탬프와 시간대를 선택합니다. SQL 문을 사용한 변환은 다음과 같습니다.

SELECT (timestamp'2020-10-25 00:00:00') AT TIME ZONE 'PST';

출력:

postgreSQL 서버에서 시간대 변환 - 이미지 7

참고: 필요한 시간대를 사용하여 쿼리를 실행할 수 있습니다. 편의상 기사 전체에서 사용되는 시간대는 PST입니다.

다음은 타임스탬프 값을 다른 시간대로 변환하는 일반화된 쿼리입니다.

SELECT ((stored_timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'PST') AS local_timestamp FROM my_table;

쿼리를 더 간단하게 설명하기 위해 PostgreSQL의 my_table이라는 테이블에서 stored_timestamp 속성을 선택할 수 있습니다.

stored_timestamp 시간대가 함께 제공되며 다음 시간대는 타임스탬프를 변환하려는 시간대를 나타냅니다. 결과 이름은 local_timestamp입니다.

타임스탬프 값을 다른 시간대로 변환하는 또 다른 명령문은 다음과 같습니다.

SELECT '2020-10-25 00:00:00'::timestamp AT time zone 'PST';

쿼리 1과 동일한 결과를 생성합니다.

postgreSQL 서버에서 시간대 변환 - 이미지 7

다음 쿼리는 위에서 언급한 쿼리의 대안입니다. 시간대가 확실하지 않은 경우 시간대 간격을 사용하여 타임스탬프를 해당 시간대로 변환할 수 있습니다.

참고: 아래 쿼리는 PST의 영역 간격을 나타내지 않습니다.

SELECT '2020-10-25 00:00:00' :: timestamp AT time zone INTERVAL'+08:30';

영역 간격 "+08:30"에 대해 수신된 타임스탬프는 다음과 같습니다.

postgresql 서버에서 시간대 변환 - 이미지 8

시간대를 변환하는 중요한 SQL 문

타임스탬프 값을 다른 시간대 값으로 변환하는 데 도움이 되도록 PostgreSQL에서 사용할 수 있는 두 가지 필수 SQL 문은 다음과 같습니다.

다음 문은 현재 시간대를 반환합니다. 따라서 시간대가 확실하지 않은 경우 다음 명령문을 실행하십시오.

SHOW timezone;

PostgreSQL 서버가 지원하는 다른 시간대를 살펴보고 싶다면 다음 명령문을 사용하십시오.

SELECT * FROM pg_timezone_names;

따라서 타임스탬프 값을 다른 시간대로 변환하는 것은 어려운 작업이 아닙니다. PostgreSQL의 간단한 SQL 문은 타임스탬프 값을 원하는 시간대로 변환하는 데 도움이 될 수 있습니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub