날짜/시간 함수 - Amazon Timestream

Amazon Timestream for LiveAnalytics와 유사한 기능을 원하는 경우 Amazon Timestream for InfluxDB를 고려해 보세요. 간소화된 데이터 수집과 실시간 분석을 위한 10밀리초 미만의 쿼리 응답 시간을 제공합니다. 여기에서 자세히 알아보세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

날짜/시간 함수

참고

Timestream for LiveAnalytics는 음수 시간 값을 지원하지 않습니다. 음의 시간을 초래하는 모든 작업은 오류가 발생합니다.

Timestream for LiveAnalytics는 날짜 및 시간에 UTC 시간대를 사용합니다. Timestream은 다음과 같은 날짜 및 시간 함수를 지원합니다.

일반 및 변환

Timestream for LiveAnalytics는 날짜 및 시간에 대해 다음과 같은 일반 및 변환 함수를 지원합니다.

함수 출력 데이터 유형 설명

current_date

날짜

현재 날짜를 UTC로 반환합니다. 괄호는 사용되지 않습니다.

SELECT current_date

결과 예제: 2022-07-07

참고

예약된 키워드이기도 합니다. 예약된 키워드 목록은 예약어 섹션을 참조하세요.

current_time

시간

현재 시간을 UTC로 반환합니다. 괄호는 사용되지 않습니다.

SELECT current_time

결과 예제: 17:41:52.827000000

참고

예약된 키워드이기도 합니다. 예약된 키워드 목록은 예약어 섹션을 참조하세요.

current_timestamp or now()

timestamp

현재 타임스탬프를 UTC 단위로 반환합니다.

SELECT current_timestamp

결과 예제: 2022-07-07 17:42:32.939000000

참고

예약된 키워드이기도 합니다. 예약된 키워드 목록은 예약어 섹션을 참조하세요.

current_timezone()

varchar

값은 'UTC'가 됩니다.

Timestream은 날짜 및 시간에 UTC 시간대를 사용합니다.

SELECT current_timezone()

결과 예제: UTC

date(varchar(x)), date(timestamp)

날짜

SELECT date(TIMESTAMP '2022-07-07 17:44:43.771000000')

결과 예제: 2022-07-07

last_day_of_month(timestamp), last_day_of_month(date)

날짜

SELECT last_day_of_month(TIMESTAMP '2022-07-07 17:44:43.771000000')

결과 예제: 2022-07-31

from_iso8601_timestamp(string)

timestamp

ISO 8601 타임스탬프를 내부 타임스탬프 형식으로 구문 분석합니다.

SELECT from_iso8601_timestamp('2022-06-17T08:04:05.000000000+05:00')

결과 예제: 2022-06-17 03:04:05.000000000

from_iso8601_date(string)

날짜

ISO 8601 날짜 문자열을 지정된 날짜의 UTC 00:00:00에 대한 내부 타임스탬프 형식으로 구문 분석합니다.

SELECT from_iso8601_date('2022-07-17')

결과 예제: 2022-07-17

to_iso8601(timestamp), to_iso8601(date)

varchar

입력에 대한 ISO 8601 형식의 문자열을 반환합니다.

SELECT to_iso8601(from_iso8601_date('2022-06-17'))

결과 예제: 2022-06-17

from_milliseconds(bigint)

timestamp

SELECT from_milliseconds(1)

결과 예제: 1970-01-01 00:00:00.001000000

from_nanoseconds(bigint)

timestamp

select from_nanoseconds(300000001)

결과 예제: 1970-01-01 00:00:00.300000001

from_unixtime(double)

timestamp

제공된 unixtime에 해당하는 타임스탬프를 반환합니다.

SELECT from_unixtime(1)

결과 예제: 1970-01-01 00:00:01.000000000

localtime

시간

현재 시간을 UTC로 반환합니다. 괄호는 사용되지 않습니다.

SELECT localtime

결과 예제: 17:58:22.654000000

참고

예약된 키워드이기도 합니다. 예약된 키워드 목록은 예약어 섹션을 참조하세요.

localtimestamp

timestamp

현재 타임스탬프를 UTC 단위로 반환합니다. 괄호는 사용되지 않습니다.

SELECT localtimestamp

결과 예제: 2022-07-07 17:59:04.368000000

참고

예약된 키워드이기도 합니다. 예약된 키워드 목록은 예약어 섹션을 참조하세요.

to_milliseconds(interval day to second), to_milliseconds(timestamp)

bigint

SELECT to_milliseconds(INTERVAL '2' DAY + INTERVAL '3' HOUR)

결과 예제: 183600000

SELECT to_milliseconds(TIMESTAMP '2022-06-17 17:44:43.771000000')

결과 예제: 1655487883771

to_nanoseconds(interval day to second), to_nanoseconds(timestamp)

bigint

SELECT to_nanoseconds(INTERVAL '2' DAY + INTERVAL '3' HOUR)

결과 예제: 183600000000000

SELECT to_nanoseconds(TIMESTAMP '2022-06-17 17:44:43.771000678')

결과 예제: 1655487883771000678

to_unixtime(timestamp)

double

제공된 타임스탬프에 대한 unixtime을 반환합니다.

SELECT to_unixtime('2022-06-17 17:44:43.771000000')

결과 예제: 1.6554878837710001E9

date_trunc(unit, timestamp)

timestamp

단위로 잘린 타임스탬프를 반환합니다. 여기서 단위는 [초, 분, 시간, 일, 주, 월, 분기 또는 연도] 중 하나입니다.

SELECT date_trunc('minute', TIMESTAMP '2022-06-17 17:44:43.771000000')

결과 예제: 2022-06-17 17:44:00.000000000

간격 및 기간

Timestream for LiveAnalytics는 날짜 및 시간에 대해 다음과 같은 간격 및 기간 함수를 지원합니다.

함수 출력 데이터 유형 설명

date_add(unit, bigint, date), date_add(unit, bigint, time), date_add(varchar(x), bigint, timestamp)

timestamp

단위의 큰 값을 추가합니다. 여기서 단위는 [초, 분, 시간, 일, 주, 월, 분기 또는 연도] 중 하나입니다.

SELECT date_add('hour', 9, TIMESTAMP '2022-06-17 00:00:00')

결과 예제: 2022-06-17 09:00:00.000000000

date_diff(unit, date, date) , date_diff(unit, time, time) , date_diff(unit, timestamp, timestamp)

bigint

단위가 [초, 분, 시간, 일, 주, 월, 분기 또는 연도] 중 하나인 차이를 반환합니다.

SELECT date_diff('day', DATE '2020-03-01', DATE '2020-03-02')

결과 예제: 1

parse_duration(string)

간격

입력 문자열을 구문 분석하여 interval에 해당하는 값을 반환합니다.

SELECT parse_duration('42.8ms')

결과 예제: 0 00:00:00.042800000

SELECT typeof(parse_duration('42.8ms'))

결과 예제: interval day to second

bin(timestamp, interval)

timestamp

timestamp 파라미터의 정수 값을 interval 파라미터 정수 값의 가장 가까운 배수로 내림합니다.

이 반환 값의 의미는 명확하지 않을 수 있습니다. 먼저 타임스탬프 정수를 간격 정수로 나눈 다음 결과에 간격 정수를 곱하여 정수 산술을 사용하여 계산됩니다.

타임스탬프는 POSIX 에포크(1970년 1월 1일) 이후 경과된 초 단위의 수로 UTC 시점을 지정하므로 반환 값은 달력 단위와 거의 정렬되지 않습니다. 예를 들어 간격을 30일로 지정하면 에포크 이후 모든 일수가 30일 단위로 분할되고 가장 최근 30일 증분의 시작이 반환되며, 이는 역월과 관련이 없습니다.

여기 몇 가지 예가 있습니다:

bin(TIMESTAMP '2022-06-17 10:15:20', 5m) ==> 2022-06-17 10:15:00.000000000 bin(TIMESTAMP '2022-06-17 10:15:20', 1d) ==> 2022-06-17 00:00:00.000000000 bin(TIMESTAMP '2022-06-17 10:15:20', 10day) ==> 2022-06-17 00:00:00.000000000 bin(TIMESTAMP '2022-06-17 10:15:20', 30day) ==> 2022-05-28 00:00:00.000000000

ago(interval)

timestamp

current_timestamp interval에 해당하는 값을 반환합니다.

SELECT ago(1d)

결과 예제: 2022-07-06 21:08:53.245000000

1시간, 1일, 30분과 같은 간격 리터럴

간격

간격 리터럴은 parse_duration(string)을 위한 편의 기능입니다. 예를 들어 1dparse_duration('1d')와 동일합니다. 이렇게 하면 간격이 사용될 때마다 리터럴을 사용할 수 있습니다. 예: ago(1d)bin(<timestamp>, 1m).

일부 간격 리터럴은 parse_duration의 약어 역할을 합니다. 예를 들어 parse_duration('1day'), 1day, parse_duration('1d')1d는 각각 유형이 interval day to second1 00:00:00.000000000을 반환합니다. parse_duration에 제공된 형식으로 공백이 허용됩니다. 예를 들어, parse_duration('1day')00:00:00.000000000을 반환합니다. 하지만 1 day는 간격 리터럴이 아닙니다.

interval day to second와 관련된 단위는 ns, nanosecond, us, microsecond, ms, millisecond, s, second, m, minute, h, hour, d, day입니다.

interval year to month도 있습니다. 연도 간 간격과 관련된 단위는 y, 연도 및 월입니다. 예를 들어 SELECT 1year1-0을 반환합니다. SELECT 12month1-0을 반환합니다. SELECT 8month0-8을 반환합니다.

quarter 단위는 date_truncdate_add와 같은 일부 함수에서도 사용할 수 있지만 quarter는 간격 리터럴의 일부로 사용할 수 없습니다.

형식 지정 및 구문 분석

Timestream for LiveAnalytics는 날짜 및 시간에 대해 다음과 같은 형식 지정 및 구문 분석 함수를 지원합니다.

함수 출력 데이터 유형 설명

date_format(timestamp, varchar(x))

varchar

이 함수에서 사용하는 형식 지정자에 대한 자세한 내용은 https://trino.io/docs/current/functions/datetime.html#mysql-date-functions를 참조하세요.

SELECT date_format(TIMESTAMP '2019-10-20 10:20:20', '%Y-%m-%d %H:%i:%s')

결과 예제: 2019-10-20 10:20:20

date_parse(varchar(x), varchar(y))

timestamp

이 함수에서 사용하는 형식 지정자에 대한 자세한 내용은 https://trino.io/docs/current/functions/datetime.html#mysql-date-functions를 참조하세요.

SELECT date_parse('2019-10-20 10:20:20', '%Y-%m-%d %H:%i:%s')

결과 예제: 2019-10-20 10:20:20.000000000

format_datetime(timestamp, varchar(x))

varchar

이 함수에서 사용하는 형식 문자열에 대한 자세한 내용은 http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html를 참조하세요.

SELECT format_datetime(parse_datetime('1968-01-13 12', 'yyyy-MM-dd HH'), 'yyyy-MM-dd HH')

결과 예제: 1968-01-13 12

parse_datetime(varchar(x), varchar(y))

timestamp

이 함수에서 사용하는 형식 문자열에 대한 자세한 내용은 http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html를 참조하세요.

SELECT parse_datetime('2019-12-29 10:10 PST', 'uuuu-LL-dd HH:mm z')

결과 예제: 2019-12-29 18:10:00.000000000

추출

Timestream for LiveAnalytics는 날짜 및 시간에 대해 다음과 같은 추출 함수를 지원합니다. 추출 함수는 나머지 편의 함수의 기반입니다.

함수 출력 데이터 유형 설명

extract

bigint

타임스탬프에서 필드를 추출합니다. 여기서 필드는 [YEAR, QUARTER, MONTH, WEEK, DAY, DAY_OF_MONTH, DAY_OF_WEEK, DOW, DAY_OF_YEAR, DOY, YEAR_OF_WEEK, YOW, HOUR, MINUTE 또는 SECOND] 중 하나입니다.

SELECT extract(YEAR FROM '2019-10-12 23:10:34.000000000')

결과 예제: 2019

day(timestamp), day(date), day(interval day to second)

bigint

SELECT day('2019-10-12 23:10:34.000000000')

결과 예제: 12

day_of_month(timestamp), day_of_month(date), day_of_month(interval day to second)

bigint

SELECT day_of_month('2019-10-12 23:10:34.000000000')

결과 예제: 12

day_of_week(timestamp), day_of_week(date)

bigint

SELECT day_of_week('2019-10-12 23:10:34.000000000')

결과 예제: 6

day_of_year(timestamp), day_of_year(date)

bigint

SELECT day_of_year('2019-10-12 23:10:34.000000000')

결과 예제: 285

dow(timestamp), dow(date)

bigint

Alias for day_of_week

doy(timestamp), doy(date)

bigint

Alias for day_of_year

hour(timestamp), hour(time), hour(interval day to second)

bigint

SELECT hour('2019-10-12 23:10:34.000000000')

결과 예제: 23

millisecond(timestamp), millisecond(time), millisecond(interval day to second)

bigint

SELECT millisecond('2019-10-12 23:10:34.000000000')

결과 예제: 0

minute(timestamp), minute(time), minute(interval day to second)

bigint

SELECT minute('2019-10-12 23:10:34.000000000')

결과 예제: 10

month(timestamp), month(date), month(interval year to month)

bigint

SELECT month('2019-10-12 23:10:34.000000000')

결과 예제: 10

nanosecond(timestamp), nanosecond(time), nanosecond(interval day to second)

bigint

SELECT nanosecond(current_timestamp)

결과 예제: 162000000

quarter(timestamp), quarter(date)

bigint

SELECT quarter('2019-10-12 23:10:34.000000000')

결과 예제: 4

second(timestamp), second(time), second(interval day to second)

bigint

SELECT second('2019-10-12 23:10:34.000000000')

결과 예제: 34

week(timestamp), week(date)

bigint

SELECT week('2019-10-12 23:10:34.000000000')

결과 예제: 41

week_of_year(timestamp), week_of_year(date)

bigint

주별 별칭

year(timestamp), year(date), year(interval year to month)

bigint

SELECT year('2019-10-12 23:10:34.000000000')

결과 예제: 2019

year_of_week(timestamp), year_of_week(date)

bigint

SELECT year_of_week('2019-10-12 23:10:34.000000000')

결과 예제: 2019

yow(timestamp), yow(date)

bigint

Alias for year_of_week