날짜 함수

날짜 함수 (Date functions)

날짜와 시간을 다루는 함수들을 모아 둔 페이지예요. 특정 날짜에 값을 더하거나, 두 시각의 차이를 구하고, 원하는 형식으로 바꾸는 일을 Amazon S3 Select로 해결할 수 있어요.

출처: 문서

본문

중대한 사항: Amazon S3 Select는 더 이상 신규 고객에게 제공되지 않아요. 기존 Amazon S3 Select 고객은 기존과 동일하게 기능을 계속 사용할 수 있어요.

Amazon S3 Select는 다음과 같은 날짜 함수를 지원해요.

  • DATE_ADD
  • DATE_DIFF
  • EXTRACT
  • TO_STRING
  • TO_TIMESTAMP
  • UTCNOW

DATE_ADD

DATE_ADD는 날짜 부분(date part), 수량, 타임스탬프가 주어지면 해당 날짜 부분을 수량만큼 변경한 갱신된 타임스탬프를 반환해요.

문법

DATE_ADD( date_part, quantity, timestamp )

파라미터

date_part

수정할 날짜의 부분을 지정해요. 다음 중 하나일 수 있어요:

  • year
  • month
  • day
  • hour
  • minute
  • second

quantity

갱신된 타임스탬프에 적용할 값이에요. 양수는 타임스탬프의 date_part를 더하고, 음수는 뺀 값이 돼요.

timestamp

함수가 연산하는 대상 타임스탬프.

예제

DATE_ADD(year, 5, `2010-01-01T`)                -- 2015-01-01 (equivalent to 2015-01-01T)
DATE_ADD(month, 1, `2010T`)                     -- 2010-02T (result will add precision as necessary)
DATE_ADD(month, 13, `2010T`)                    -- 2011-02T
DATE_ADD(day, -1, `2017-01-10T`)                -- 2017-01-09 (equivalent to 2017-01-09T)
DATE_ADD(hour, 1, `2017T`)                      -- 2017-01-01T01:00-00:00
DATE_ADD(hour, 1, `2017-01-02T03:04Z`)          -- 2017-01-02T04:04Z
DATE_ADD(minute, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:05:05.006Z
DATE_ADD(second, 1, `2017-01-02T03:04:05.006Z`) -- 2017-01-02T03:04:06.006Z

DATE_DIFF

DATE_DIFF는 날짜 부분과 두 개의 유효한 타임스탬프가 주어지면 해당 날짜 부분 단위의 차이를 반환해요. timestamp1의 date_part 값이 timestamp2의 date_part 값보다 크면 반환 값은 음의 정수이고, timestamp1의 date_part 값이 timestamp2의 date_part 값보다 작으면 양의 정수예요.

문법

DATE_DIFF( date_part, timestamp1, timestamp2 )

파라미터

date_part

비교할 타임스탬프의 부분을 지정해요. date_part의 정의는 DATE_ADD를 참고해요.

timestamp1

비교할 첫 번째 타임스탬프.

timestamp2

비교할 두 번째 타임스탬프.

예제

DATE_DIFF(year, `2010-01-01T`, `2011-01-01T`)            -- 1
DATE_DIFF(year, `2010T`, `2010-05T`)                     -- 4 (2010T is equivalent to 2010-01-01T00:00:00.000Z)
DATE_DIFF(month, `2010T`, `2011T`)                       -- 12
DATE_DIFF(month, `2011T`, `2010T`)                       -- -12
DATE_DIFF(day, `2010-01-01T23:00`, `2010-01-02T01:00`) -- 0 (need to be at least 24h apart to be 1 day apart)

EXTRACT

EXTRACT는 날짜 부분과 타임스탬프가 주어지면 타임스탬프의 해당 날짜 부분 값을 반환해요.

문법

EXTRACT( date_part FROM timestamp )

파라미터

date_part

추출할 타임스탬프의 부분을 지정해요. 다음 중 하나일 수 있어요:

  • YEAR
  • MONTH
  • DAY
  • HOUR
  • MINUTE
  • SECOND
  • TIMEZONE_HOUR
  • TIMEZONE_MINUTE

timestamp

함수가 연산하는 대상 타임스탬프.

예제

EXTRACT(YEAR FROM `2010-01-01T`)                           -- 2010
EXTRACT(MONTH FROM `2010T`)                                -- 1 (equivalent to 2010-01-01T00:00:00.000Z)
EXTRACT(MONTH FROM `2010-10T`)                             -- 10
EXTRACT(HOUR FROM `2017-01-02T03:04:05+07:08`)             -- 3
EXTRACT(MINUTE FROM `2017-01-02T03:04:05+07:08`)           -- 4
EXTRACT(TIMEZONE_HOUR FROM `2017-01-02T03:04:05+07:08`)    -- 7
EXTRACT(TIMEZONE_MINUTE FROM `2017-01-02T03:04:05+07:08`)  -- 8

TO_STRING

TO_STRING은 타임스탬프와 포맷 패턴이 주어지면 해당 형식으로 타임스탬프를 표현한 문자열을 반환해요.

문법

TO_STRING ( timestamp time_format_pattern )

파라미터

timestamp

함수가 연산하는 대상 타임스탬프.

time_format_pattern

다음과 같은 특수 문자 해석을 갖는 문자열:

형식 예시 설명
yy 69 2자리 연도
y 1969 4자리 연도
yyyy 1969 0으로 채운 4자리 연도
M 1 월 (1-12)
MM 01 0으로 채운 월
MMM Jan 약식 월 이름
MMMM January 전체 월 이름
MMMMM J 월의 첫 글자 (참고: 이 형식은 TO_TIMESTAMP 함수에는 사용할 수 없어요.)
d 2 일 (1-31)
dd 02 0으로 채운 일 (01-31)
a AM 오전/오후 (AM 또는 PM)
h 3 시 (1-12)
hh 03 0으로 채운 시 (01-12)
H 3 시 (0-23)
HH 03 0으로 채운 시 (00-23)
m 4 분 (0-59)
mm 04 0으로 채운 분 (00-59)
s 5 초 (0-59)
ss 05 0으로 채운 초 (00-59)
S 0 초의 소수 (정밀도: 0.1, 범위: 0.0-0.9)
SS 6 초의 소수 (정밀도: 0.01, 범위: 0.0-0.99)
SSS 60 초의 소수 (정밀도: 0.001, 범위: 0.0-0.999)
… … …
SSSSSSSSS 60000000 초의 소수 (최대 정밀도: 1나노초, 범위: 0.0-0.999999999)
n 60000000 초의 나노(Nano)
X +07 또는 Z 시 단위 오프셋, 오프셋이 0이면 Z
XX 또는 XXXX +0700 또는 Z 시·분 단위 오프셋, 오프셋이 0이면 Z
XXX 또는 XXXXX +07:00 또는 Z 시·분 단위 오프셋, 오프셋이 0이면 Z
x 7 시 단위 오프셋
xx 또는 xxxx 700 시·분 단위 오프셋
xxx 또는 xxxxx +07:00 시·분 단위 오프셋

예제

TO_STRING(`1969-07-20T20:18Z`,  'MMMM d, y')                    -- "July 20, 1969"
TO_STRING(`1969-07-20T20:18Z`, 'MMM d, yyyy')                   -- "Jul 20, 1969"
TO_STRING(`1969-07-20T20:18Z`, 'M-d-yy')                        -- "7-20-69"
TO_STRING(`1969-07-20T20:18Z`, 'MM-d-y')                        -- "07-20-1969"
TO_STRING(`1969-07-20T20:18Z`, 'MMMM d, y h:m a')               -- "July 20, 1969 8:18 PM"
TO_STRING(`1969-07-20T20:18Z`, 'y-MM-dd''T''H:m:ssX')           -- "1969-07-20T20:18:00Z"
TO_STRING(`1969-07-20T20:18+08:00Z`, 'y-MM-dd''T''H:m:ssX')     -- "1969-07-20T20:18:00Z"
TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXX')   -- "1969-07-20T20:18:00+0800"
TO_STRING(`1969-07-20T20:18+08:00`, 'y-MM-dd''T''H:m:ssXXXXX')  -- "1969-07-20T20:18:00+08:00"

TO_TIMESTAMP

TO_TIMESTAMP는 문자열이 주어지면 그것을 타임스탬프로 변환해요. TO_STRING의 역연산이에요.

문법

TO_TIMESTAMP ( string )

파라미터

string

함수가 연산하는 대상 문자열.

예제

TO_TIMESTAMP('2007T')                         -- `2007T`
TO_TIMESTAMP('2007-02-23T12:14:33.079-08:00') -- `2007-02-23T12:14:33.079-08:00`

UTCNOW

UTCNOW는 현재 시간을 UTC 기준 타임스탬프로 반환해요.

문법

UTCNOW()

파라미터

UTCNOW는 파라미터를 받지 않아요.

예제

UTCNOW() -- 2017-10-13T16:02:11.123Z

더 알아보기 (Learn more)