

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# CONVERT\_TIMEZONE 함수
<a name="CONVERT_TIMEZONE"></a>

CONVERT\_TIMEZONE은 시간대끼리 타임스탬프를 변환합니다. 이 함수는 일광 절약 시간에 맞춰 자동으로 조정됩니다.

## 구문
<a name="CONVERT_TIMEZONE-syntax"></a>

```
CONVERT_TIMEZONE( ['source_timezone',] 'target_timezone', 'timestamp')
```

## 인수
<a name="CONVERT_TIMEZONE-arguments"></a>

*source\_timezone*  
(옵션) 현재 타임스탬프의 시간대입니다. 기본값은 UTC입니다. 자세한 내용은 [시간대 사용 노트](#CONVERT_TIMEZONE-usage-notes) 섹션을 참조하세요.

*target\_timezone*   
새로운 타임스탬프의 시간대입니다. 자세한 내용은 [시간대 사용 노트](#CONVERT_TIMEZONE-usage-notes) 섹션을 참조하세요.

*timestamp*   
타임스탬프 열 또는 묵시적으로 타임스탬프로 변환되는 표현식입니다.

## 반환 타입
<a name="CONVERT_TIMEZONE-return-type"></a>

TIMESTAMP

## 시간대 사용 노트
<a name="CONVERT_TIMEZONE-usage-notes"></a>

*source\_timezone* 또는 *target\_timezone*은 시간대 이름('Africa/Kampala', 'Singapore' 등)이나 시간대 약어('UTC', 'PDT' 등)로 지정할 수 있습니다. 시간대 이름을 이름으로 변환하거나 약어를 약어로 변환할 필요가 없습니다. 예를 들어 소스 시간대 이름인 'Singapore'에서 타임스탬프를 선택하고 이를 시간대 약어 'PDT'의 타임스탬프로 변환할 수 있습니다.

**참고**  
시간대 이름 또는 시간대 약어 사용의 결과는 일광 절약 시간 등 지역별 계절 시간으로 인해 다를 수 있습니다.

### 시간대 이름 사용
<a name="CONVERT_TIMEZONE-using-name"></a>

현재 시간대 이름 및 시간대 이름의 전체 목록을 보려면 다음 명령을 실행하세요.

```
select pg_timezone_names();
```

각 행에는 시간대 이름, 약어, UTC 오프셋 및 시간대가 일광 절약 시간제(`t` 또는 `f`)를 준수하는지 여부를 표시하는 쉼표로 구분된 문자열이 포함됩니다. 예를 들어 다음 코드 조각은 두 개의 결과 행을 보여줍니다. 첫 번째 행은 `Antarctica/South Pole` 시간대(약어 `NZDT`)이며 UTC 오프셋이 `13:00:00`이고 `f`는 일광 절약 시간제를 준수하지 않음을 나타냅니다. 두 번째 행은 `Europe/Paris` 시간대(약어 `CET`)이며 UTC 오프셋이 `01:00:00`이고 `f`는 일광 절약 시간제를 준수함을 나타냅니다.

```
pg_timezone_names
------------------
(Antarctica/South_Pole,NZDT,13:00:00,t)	
(Europe/Paris,CET,01:00:00,f)
```

SQL 문을 실행하여 전체 목록을 가져오고 시간대 이름을 찾으세요. 대략 600개의 행이 반환됩니다. 반환된 일부 시간대 이름이 대문자 머리글자이거나 약어(GB, PRC, ROK 등)이기는 하지만 CONVERT\_TIMEZONE 함수는 이를 시간대 약어가 아닌 시간대 이름으로 처리합니다.

시간대를 시간대 이름으로 지정하는 경우에는 CONVERT\_TIMEZONE 함수가 일광 절약 시간(DST)에 맞춰, 혹은 서머 타임, 스탠다드 타임, 윈터 타임 같이 '*timestamp*'에서 지정한 날짜 및 시간에 해당하는 시간대의 지역별 계절 프로토콜에 맞춰 자동 조정합니다. 예를 들어 'Europe/London'은 겨울에는 UTC를 나타내고 여름에는 1시간이 추가됩니다. Amazon Redshift는 [IANA 시간대 데이터베이스](https://www.iana.org/time-zones)를 표준 시간대 사양의 신뢰할 수 있는 소스로 사용합니다.

### 시간대 약어 사용
<a name="CONVERT_TIMEZONE-using-abbrev"></a>

 현재 시간대 약어 및 시간대 약어의 전체 목록을 보려면 다음 명령을 실행하세요.

```
select pg_timezone_abbrevs();
```

결과에는 시간대 약어, UTC 오프셋 및 시간대가 일광 절약 시간제(`t` 또는 `f`)를 준수하는지 여부를 표시하는 쉼표로 구분된 문자열이 포함됩니다. 예를 들어 다음 코드 조각은 두 개의 결과 행을 보여줍니다. 첫 번째 행에는 UTC에서 `-07:00:00` 오프셋이 있는 일광 절약 태평양 표준시(Pacific Daylight Time, 약어 `PDT`)가 포함되며 `t`는 일광 절약 시간제를 준수함을 나타냅니다. 두 번째 행에는 UTC에서 `-08:00:00` 오프셋이 있는 태평양 표준시(Pacific Standard Time, 약어 `PST`)가 포함되며 `f`는 일광 절약 시간제를 준수하지 않을 나타냅니다.

```
pg_timezone_abbrevs
--------------------
(PDT,-07:00:00,t)	
(PST,-08:00:00,f)
```

SQL 문을 실행하여 전체 목록을 얻고 해당 오프셋 및 일광 절약 표시기를 기반으로 약어를 찾으세요. 대략 200개의 행이 반환됩니다.

시간대 약어는 UTC의 고정 오프셋을 나타냅니다. 시간대를 시간대 약어로 지정하는 경우에는 CONVERT\_TIMEZONE 함수가 UTC의 고정 오프셋을 사용하기 때문에 지역별 계정 프로토콜에 따라 조정하지 않습니다.

### POSIX 스타일 형식 사용
<a name="CONVERT_TIMEZONE-using-posix"></a>

POSIX-스타일 시간대 사양은 *STDoffset* 또는 *STDoffsetDST* 형식을 따릅니다. 여기서 *STD*는 시간대의 약어이고, *offset*은 UTC의 숫자 오프셋(서부 시간)이고, *DST*는 일광 절약 시간대의 약어(옵션)입니다. 일광 절약 시간은 지정한 오프셋보다 1시간 앞서는 것으로 가정합니다.

POSIX-스타일 시간대 형식은 Greenwich에서 서쪽으로 양의 오프셋을 사용하는 반면 ISO-8601 규약은 Greenwich에서 동쪽으로 양의 오프셋을 사용합니다.

다음은 POSIX-스타일 시간대의 예입니다.
+  PST8
+  PST8PDT
+  EST5
+  EST5EDT

**참고**  
Amazon Redshift는 POSIX 스타일 시간대 사양의 유효성을 검사하지 않으므로 시간대를 잘못된 값으로 설정할 수 있습니다. 예를 들어 다음 명령을 시간대를 잘못된 값으로 설정하지만 오류를 반환하지 않습니다.  

```
set timezone to ‘xxx36’;
```

## 예제
<a name="CONVERT_TIMEZONE-examples"></a>

이 안내서에 나오는 예는 대부분 TICKIT 샘플 데이터 세트를 사용합니다. 자세한 내용은 [샘플 데이터베이스](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)를 참조하세요.

다음은 타임스탬프 값을 기본 UTC 시간대에서 PST로 변환하는 예입니다.

```
select convert_timezone('PST', '2008-08-21 07:23:54');
                     
 convert_timezone
------------------------
2008-08-20 23:23:54
```

다음은 LISTTIME 열의 타임스탬프 값을 기본 UTC 시간대에서 PST로 변환하는 예입니다. 타임스탬프가 일광 절약 시간(PST)에 해당하더라도 대상 시간대가 약어로 지정되어 있기 때문에 스탠다드 타임으로 변환됩니다.

```
select listtime, convert_timezone('PST', listtime) from listing
where listid = 16;
                     
     listtime       |   convert_timezone
--------------------+-------------------
2008-08-24 09:36:12     2008-08-24 01:36:12
```

다음은 LISTTIME 열의 타임스탬프 값을 기본 UTC 시간대에서 US/Pacific 시간대로 변환하는 예입니다. 대상 시간대가 시간대 이름을 사용하고 있고, 타임스탬프가 일광 절약 시간에 해당하기 때문에 함수가 일광 절약 시간을 반환합니다.

```
select listtime, convert_timezone('US/Pacific', listtime) from listing
where listid = 16;
                     
     listtime       |   convert_timezone
--------------------+---------------------
2008-08-24 09:36:12 | 2008-08-24 02:36:12
```

다음은 타임스탬프 문자열을 EST에서 PST로 변환하는 예입니다.

```
select convert_timezone('EST', 'PST', '20080305 12:25:29');
                     
 convert_timezone
-------------------
2008-03-05 09:25:29
```

다음은 대상 시간대가 시간대 이름(America/New\_York)을 사용하고 있고, 타임스탬프가 스탠다드 타임에 해당하기 때문에 타임스탬프를 미국 동부 스탠다드 타임으로 변환하는 예입니다.

```
select convert_timezone('America/New_York', '2013-02-01 08:00:00');

 convert_timezone
---------------------
2013-02-01 03:00:00
(1 row)
```

다음은 대상 시간대가 시간대 이름(America/New\_York)을 사용하고 있고, 타임스탬프가 일광 절약 시간에 해당하기 때문에 타임스탬프를 미국 동부 일광 절약 시간으로 변환하는 예입니다.

```
select convert_timezone('America/New_York', '2013-06-01 08:00:00');

 convert_timezone
---------------------
2013-06-01 04:00:00
(1 row)
```

다음은 오프셋의 사용을 설명하는 예입니다.

```
SELECT CONVERT_TIMEZONE('GMT','NEWZONE +2','2014-05-17 12:00:00') as newzone_plus_2, 
CONVERT_TIMEZONE('GMT','NEWZONE-2:15','2014-05-17 12:00:00') as newzone_minus_2_15, 
CONVERT_TIMEZONE('GMT','America/Los_Angeles+2','2014-05-17 12:00:00') as la_plus_2,
CONVERT_TIMEZONE('GMT','GMT+2','2014-05-17 12:00:00') as gmt_plus_2;
 
   newzone_plus_2    | newzone_minus_2_15  |      la_plus_2      |     gmt_plus_2
---------------------+---------------------+---------------------+---------------------
2014-05-17 10:00:00 | 2014-05-17 14:15:00 | 2014-05-17 10:00:00 | 2014-05-17 10:00:00
(1 row)
```