날짜 또는 타임스탬프 함수의 날짜 부분
다음 표는 아래 함수의 인수로 허용되는 날짜 부분과 시간 부분의 이름 및 약어를 구분한 것입니다.
-
DATEADD
-
DATEDIFF
-
DATE_PART
-
EXTRACT
날짜 부분 또는 시간 부분 | 약어 |
---|---|
millennium, millennia | mil, mils |
century, centuries | c, cent, cents |
decade, decades | dec, decs |
Epoch | epoch(EXTRACT에서 지원됨) |
year, years | y, yr, yrs |
quarter, quarters | qtr, qtrs |
month, months | mon, mons |
week, weeks | w |
요일 |
dayofweek, dow, dw, weekday(DATE_PART 및 EXTRACT 함수에서 지원됨) 일요일부터 시작하여 0~6의 정수를 반환합니다. 참고DOW 날짜 부분은 날짜/시간 형식 문자열에 사용되는 요일(D) 날짜 부분과 동작이 다릅니다. D는 정수 1~7을 기반으로합니다. 여기서 일요일은 1입니다. 자세한 내용은 날짜/시간 형식 문자열 단원을 참조하십시오. |
day_of_year | dayofyear, doy, dy, yearday(EXTRACT에서 지원됨) |
day, days | d |
hour, hours | h, hr, hrs |
minute, minutes | m, min, mins |
second, seconds | s, sec, secs |
millisecond, milliseconds | ms, msec, msecs, msecond, mseconds, millisec, millisecs, millisecon |
microsecond, microseconds | microsec, microsecs, microsecond, usecond, useconds, us, usec, usecs |
timezone, timezone_hour, timezone_minute | 시간대를 포함한 타임스탬프(TIMESTAMPTZ)인 경우에만 EXTRACT에서 지원됩니다. |
초, 밀리초 및 마이크로초에서 결과의 차이
다른 날짜 함수에서 초, 밀리초 또는 마이크로초를 날짜 부분으로 지정하더라도 쿼리 결과에서는 최소한의 차이만 발생합니다.
-
EXTRACT 함수는 지정한 날짜 부분에 한해 정수를 반환하고 더 높거나 낮은 단위의 날짜 부분은 무시합니다. 예를 들어 지정한 날짜 부분이 초라면 밀리초와 마이크로초는 결과에 포함되지 않습니다. 지정한 날짜 부분이 밀리초라면 초와 마이크로초가 포함되지 않습니다. 지정한 날짜 부분이 마이크로초라면 초와 밀리초가 포함되지 않습니다.
-
DATE_PART 함수는 지정하는 날짜 부분에 상관없이 타임스탬프에서 전체 초 부분을 반환하며, 이때 반환되는 값은 필요에 따라 소수 값이 될 수도 있고, 정수가 될 수도 있습니다.
예를 들어 다음 쿼리의 결과를 서로 비교하십시오.
create table seconds(micro timestamp); insert into seconds values('2009-09-21 11:10:03.189717'); select extract(sec from micro) from seconds;
date_part ----------- 3
select date_part(sec, micro) from seconds;
pgdate_part ------------- 3.189717
CENTURY, EPOCH, DECADE 및 MIL 참고 사항
- CENTURY 또는 CENTURIES
-
Amazon Redshift는 CENTURY를 ###1년부터 시작하여
###0
년으로 끝나는 것으로 해석합니다.select extract (century from timestamp '2000-12-16 12:21:13');
date_part ----------- 20
select extract (century from timestamp '2001-12-16 12:21:13');
date_part ----------- 21
- EPOCH
-
Amazon Redshift의 EPOCH 구현은 클러스터가 상주하는 시간대와 별도로 1970-01-01 00:00:00.000000을 따릅니다. 따라서 클러스터가 상주하는 시간대에 따라 시간차를 기준으로 결과를 오프셋 처리해야 할 수도 있습니다.
다음은 아래 과정을 설명한 예입니다.
-
EVENT 테이블에 EVENT_EXAMPLE이라는 이름의 테이블을 생성합니다. 이 CREATE AS 명령은 DATE_PART 함수를 사용하여 각 이벤트마다 epoch 값을 저장할 날짜 열(기본 이름 PGDATE_PART)을 생성합니다.
-
PG_TABLE_DEF에서 EVENT_EXAMPLE의 열과 데이터 형식을 선택합니다.
-
EVENT_EXAMPLE 테이블에서 EVENTNAME, STARTTIME 및 PGDATE_PART를 선택하여 다른 날짜 및 시간 형식을 확인합니다.
-
EVENT EXAMPLE에서 EVENTNAME과 STARTTIME을 선택합니다. PGDATE_PART의 epoch 값을 1초 간격으로 시간대를 제외한 타임스탬프로 변환한 후 CONVERTED_TIMESTAMP라는 이름의 열에 결과를 반환합니다.
create table event_example as select eventname, starttime, date_part(epoch, starttime) from event; select "column", type from pg_table_def where tablename='event_example';
column | type ---------------+----------------------------- eventname | character varying(200) starttime | timestamp without time zone pgdate_part | double precision (3 rows)
select eventname, starttime, pgdate_part from event_example;
eventname | starttime | pgdate_part ----------------------+---------------------+------------- Mamma Mia! | 2008-01-01 20:00:00 | 1199217600 Spring Awakening | 2008-01-01 15:00:00 | 1199199600 Nas | 2008-01-01 14:30:00 | 1199197800 Hannah Montana | 2008-01-01 19:30:00 | 1199215800 K.D. Lang | 2008-01-01 15:00:00 | 1199199600 Spamalot | 2008-01-02 20:00:00 | 1199304000 Macbeth | 2008-01-02 15:00:00 | 1199286000 The Cherry Orchard | 2008-01-02 14:30:00 | 1199284200 Macbeth | 2008-01-02 19:30:00 | 1199302200 Demi Lovato | 2008-01-02 19:30:00 | 1199302200
select eventname, starttime, timestamp with time zone 'epoch' + pgdate_part * interval '1 second' AS converted_timestamp from event_example;
eventname | starttime | converted_timestamp ----------------------+---------------------+--------------------- Mamma Mia! | 2008-01-01 20:00:00 | 2008-01-01 20:00:00 Spring Awakening | 2008-01-01 15:00:00 | 2008-01-01 15:00:00 Nas | 2008-01-01 14:30:00 | 2008-01-01 14:30:00 Hannah Montana | 2008-01-01 19:30:00 | 2008-01-01 19:30:00 K.D. Lang | 2008-01-01 15:00:00 | 2008-01-01 15:00:00 Spamalot | 2008-01-02 20:00:00 | 2008-01-02 20:00:00 Macbeth | 2008-01-02 15:00:00 | 2008-01-02 15:00:00 The Cherry Orchard | 2008-01-02 14:30:00 | 2008-01-02 14:30:00 Macbeth | 2008-01-02 19:30:00 | 2008-01-02 19:30:00 Demi Lovato | 2008-01-02 19:30:00 | 2008-01-02 19:30:00 ...
-
- DECADE 또는 DECADES
-
Amazon Redshift는 DECADE 또는 DECADES DATEPART를 일반 달력에 따라 해석합니다. 예를 들어 일반 역법은 0001년부터 시작하기 때문에 첫 10년(decade 1)은 0001-01-01부터 0009-12-31까지이며, 두 번째 10년(decade 2)은 0010-01-01부터 0019-12-31까지입니다. 이러한 식으로 decade 201은 2000-01-01부터 2009-12-31까지입니다.
select extract(decade from timestamp '1999-02-16 20:38:40');
date_part ----------- 200
select extract(decade from timestamp '2000-02-16 20:38:40');
date_part ----------- 201
select extract(decade from timestamp '2010-02-16 20:38:40');
date_part ----------- 202
- MIL 또는 MILS
-
Amazon Redshift는 MIL을 #001년 첫 번째 날짜부터 시작하여
#000
년 마지막 날짜로 끝나는 것으로 해석합니다.select extract (mil from timestamp '2000-12-16 12:21:13');
date_part ----------- 2
select extract (mil from timestamp '2001-12-16 12:21:13');
date_part ----------- 3