日期/时间函数 - Amazon Timestream

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

日期/时间函数

注意

的时间流 LiveAnalytics 不支持负时间值。任何导致负时间的操作都会导致错误。

timestream LiveAnalytics 使用UTC时区表示日期和时间。Timestream 支持以下日期和时间函数。

一般和转换

Timestream for LiveAnalytics 支持以下日期和时间的常规函数和转换函数。

函数 输出数据类型 描述

当前日期

date

返回当前日期UTC。不使用括号。

SELECT current_date

结果示例:2022-07-07

注意

这也是一个保留关键字。有关保留关键字的列表,请参阅保留关键字

当前时间

时间

返回当前时间UTC。不使用括号。

SELECT current_time

结果示例:17:41:52.827000000

注意

这也是一个保留关键字。有关保留关键字的列表,请参阅保留关键字

当前时间戳或现在 ()

timestamp

返回当前的时间戳。UTC

SELECT current_timestamp

结果示例:2022-07-07 17:42:32.939000000

注意

这也是一个保留关键字。有关保留关键字的列表,请参阅保留关键字

当前时区 ()

varchar

该值将是 'UTC。'

Timestream 使用UTC时区作为日期和时间。

SELECT current_timezone()

结果示例:UTC

日期(varchar (x))、日期(时间戳)

date

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

结果示例:2022-07-07

本月的最后一天(时间戳)、当月的最后一天(日期)

date

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

结果示例:2022-07-31

from_iso8601_timestamp(字符串)

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(字符串)

date

将 ISO 8601 日期字符串解析为指定日期 UTC 00:00:00 的内部时间戳格式。

SELECT from_iso8601_date('2022-07-17')

结果示例:2022-07-17

to_iso8601(时间戳)、to_iso8601(日期)

varchar

返回一个 ISO 8601 格式的输入字符串。

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

结果示例:2022-06-17

from_mliseconds (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(双精度)

timestamp

返回与所提供的 unixtime 相对应的时间戳。

SELECT from_unixtime(1)

结果示例:1970-01-01 00:00:01.000000000

当地时间

时间

返回当前时间UTC。不使用括号。

SELECT localtime

结果示例:17:58:22.654000000

注意

这也是一个保留关键字。有关保留关键字的列表,请参阅保留关键字

本地时间戳

timestamp

返回当前的时间戳。UTC不使用括号。

SELECT localtimestamp

结果示例:2022-07-07 17:59:04.368000000

注意

这也是一个保留关键字。有关保留关键字的列表,请参阅保留关键字

to_mliseconds(间隔日到秒)、to_mliseconds(时间戳)

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(间隔日到秒)、to_nanoseconds(时间戳)

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(时间戳)

double

返回所提供时间戳的 unixtime。

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

结果示例:1.6554878837710001E9

date_trunc(单位,时间戳)

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(单位、大整数、日期)、date_add(单位、大整数、时间)、date_add(varchar (x)、bigint、timestamp)

timestamp

添加一个 bigint 单位,其中单位是 [秒、分钟、小时、日、周、月、季度或年] 之一。

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

结果示例:2022-06-17 09:00:00.000000000

date_diff(单位、日期、日期)、date_diff(单位、时间、时间、时间)、date_diff(单位、时间戳、时间戳)

bigint

返回差值,其中单位为 [秒、分钟、小时、日、周、月、季度或年] 之一。

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

结果示例:1

解析持续时间(字符串)

interval

解析输入字符串以返回interval等效的字符串。

SELECT parse_duration('42.8ms')

结果示例:0 00:00:00.042800000

SELECT typeof(parse_duration('42.8ms'))

结果示例:interval day to second

bin(时间戳、间隔)

timestamp

timestamp参数的整数值向下舍入到interval参数整数值的最接近的倍数。

这个返回值的含义可能并不明显。它是使用整数算术计算的,首先是将时间戳整数除以间隔整数,然后将结果乘以间隔整数。

请记住,时间戳将时间UTC点指定为自POSIX纪元(1970年1月1日)以来经过的几分之一秒,因此返回值很少与日历单位一致。例如,如果您将 30 天的时间间隔指定为 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

之前(间隔)

timestamp

返回与当前时间戳对应的值。interval

SELECT ago(1d)

结果示例:2022-07-06 21:08:53.245000000

间隔文字,例如 1h、1d 和 30m

interval

间隔字面值便于 parse_duration(字符串)。例如,1dparse_duration('1d') 相同。这允许在任何使用间隔的地方使用文字。例如,ago(1d)bin(<timestamp>, 1m)

一些间隔文字充当 parse_duration 的简写。例如,parse_duration('1day')1dayparse_duration('1d')、,1d每个都返回类型1 00:00:00.000000000所在的位置interval day to second。允许以提供给的格式留出空间parse_duration。例如,parse_duration('1day')还会返回00:00:00.000000000。但1 day不是间隔字面意思。

与之相关的单位interval day to second是 ns、纳秒、us、微秒、毫秒、s、秒、m、分钟、h、小时、d 和天。

还有interval year to month。与年与月间隔相关的单位是 y、年和月。例如,SELECT 1year退货1-0SELECT 12month还会返回1-0SELECT 8month返回0-8

尽管单位quarter也可用于某些函数,例如date_truncdate_addquarter但不能作为区间文字的一部分使用。

格式化和解析

Timestream for LiveAnalytics 支持以下日期和时间的格式化和解析函数。

函数 输出数据类型 描述

日期格式(时间戳,变量字符 (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(时间戳,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

从时间戳中提取一个字段,其中字段是 [、、、、_OF_ YEAR QUARTER、_OF_ MONTH WEEK DAY、DAY _OF_、MONTH、DAY _OF_、_OF_ WEEK DOW、、、DAYYEAR、、DOY、YEAR或] 之一。WEEK YOW HOUR MINUTE SECOND

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

结果示例:2019

日(时间戳)、日(日期)、日(日到秒的间隔)

bigint

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

结果示例:12

day_of_month(时间戳)、月日(日期)、day_of_month(日到秒的间隔)

bigint

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

结果示例:12

星期_of_week(时间戳)、星期_of_week(日期)

bigint

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

结果示例:6

年日_年(时间戳)、年日_年(日期)

bigint

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

结果示例:285

向下(时间戳)、向下(日期)

bigint

day_of_week 的别名

doy(时间戳)、doy(日期)

bigint

day_of_year 的别名

小时(时间戳)、小时(时间)、小时(日到秒间隔)

bigint

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

结果示例:23

毫秒(时间戳)、毫秒(时间)、毫秒(间隔日到秒)

bigint

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

结果示例:0

分钟(时间戳)、分钟(时间)、分钟(日到秒间隔)

bigint

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

结果示例:10

月(时间戳)、月(日期)、月(年到月的间隔)

bigint

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

结果示例:10

纳秒(时间戳)、纳秒(时间)、纳秒(间隔日到秒)

bigint

SELECT nanosecond(current_timestamp)

结果示例:162000000

季度(时间戳)、季度(日期)

bigint

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

结果示例:4

秒(时间戳)、秒(时间)、秒(间隔日到秒)

bigint

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

结果示例:34

周(时间戳)、周(日期)

bigint

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

结果示例:41

年中的周(时间戳)、年中的周(日期)

bigint

本周的别名

年(时间戳)、年(日期)、年(年与月的间隔)

bigint

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

结果示例:2019

一周中的一年(时间戳)、一周中的一年(日期)

bigint

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

结果示例:2019

yow(时间戳),yow(日期)

bigint

本周的别名