日期函数 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

日期函数

重要

不再向新客户提供 Amazon S3 Select。Amazon S3 Select 的现有客户可以像往常一样继续使用该功能。了解更多

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

DATE_ADD

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

语法

DATE_ADD( date_part, quantity, timestamp )

参数

date_part

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

  • 个月

  • day

  • 小时

  • minute

quantity

应用到已更新的时间戳的值。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 返回日期部分的不同之处。当 date_parttimestamp1 值大于 date_parttimestamp2 值时,返回值为负整数。当 date_parttimestamp1 值小于 date_parttimestamp2 值时,返回值为正整数。

语法

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

以零填充的 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

+07Z

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

XXXXXX

+0700Z

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

XXXXXXXX

+07:00Z

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

x

7

小时数偏移

xxxxxx

700

小时和分钟数偏移

xxxxxxxx

+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_TIMESTAMPTO_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