날짜 함수
날짜 함수 (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