Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

日期函数

Amazon S3 Select 和 Amazon Glacier Select 支持以下日期函数。

DATE_ADD

指定日期部分、数量和时间戳,返回通过修改由数量的日期部分而更新的时间戳。

语法

DATE_ADD( date_part, quantity, timestamp )

参数

date_part

指定要修改的日期部分。这可能是以下值之一:

  • 个月

  • day

  • 小时

  • minute

数量

应用到已更新的时间戳的值。将数量的正值添加到时间戳的 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

指定日期部分和两个有效的时间戳,返回日期部分的不同之处。当 timestamp1date_part 值大于 timestamp2date_part 值时,返回值为负整数。当 timestamp1date_part 值小于 timestamp2date_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:00T`, `2010-01-02T01:00T`) -- 0 (need to be at least 24h apart to be 1 day apart)

EXTRACT

指定部分日期和时间戳,返回时间戳日期部分的值。

语法

EXTRACT( date_part FROM timestamp )

参数

date_part

指定要提取的时间戳部分。这可能是以下值之一:

  • 个月

  • day

  • 小时

  • minute

  • 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 ( timestamp time_format_pattern )

参数

timestamp

对其执行函数的目标时间戳。

time_format_pattern

具有以下特殊字符解释的字符串。

格式 示例 描述
yy 69

2 位年份

y 1969

4 位年份

yyyy 1969

以零填充的 4 位年份

M 1

一年中的月

MM 01

以零填充的一年中的月份

MMM Jan

一年中的月的缩写名称

MMMM January

一年中的月的完整名称

MMMMM J

一年中的月的首字母 (注释:与 to_timestamp 函数结合使用时无效)

d 2

一个月中的日 (1-31)

dd 02

以零填充的一个月中的日 (01-31)

a AM

一天的 AM 或 PM

h 3

一天中的小时 (1-12)

hh 03

以零填充的一天中的小时 (01-12)

H 3

一天中的小时 (0-23)

HH 03

以零填充的一天中的小时 (00-23)

m 4

一小时中的分钟 (0-59)

mm 04

以零填充的一小时中的分钟 (00-59)

s 5

一分钟中的秒 (0-59)

ss 05

以零填充的一分钟中的秒 (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

纳秒级

X +07 or Z

小时数偏移,如果偏移为 0,则为“Z”

XX or XXXX +0700 or Z

小时和分钟数偏移,如果偏移为 0,则为“Z”

XXX or XXXXX +07:00 or Z

小时和分钟数偏移,如果偏移为 0,则为“Z”

x 7

小时数偏移

xx or xxxx 700

小时和分钟数偏移

xxx or 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_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

以时间戳的形式返回当前时间 (UTC)。

语法

UTCNOW()

参数

示例

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