文档

时间、日期函数和操作符

更新时间:

云原生数据仓库 AnalyticDB PostgreSQL 版兼容PostgreSQL时间、日期函数和操作符。本文简单列举云原生数据仓库 AnalyticDB PostgreSQL 版兼容的时间、日期函数和操作符及用法示例。

PostgreSQL时间、日期函数和操作符的详细使用方法,请参见PostgreSQL官方文档:时间、日期函数和操作符

时间、日期函数

函数名称

返回类型

函数说明

用法示例

示例结果

age(,)

interval

用于计算两个时间戳之间的时间间隔。

age(timestamp '2001-04-10', timestamp '1957-06-13')

43 years 9 mons 27 days

age()

interval

用于计算当前时间与指定参数之间的时间间隔。

age(timestamp '1957-06-13')

43 years 8 mons 3 day

clock_timestamp()

timestamp with time zone

获取日期和时间(每次调用的最新时间)。

clock_timestamp()

2024-07-01 20:00:00

current_date

date

获取当前日期。

current_date

2024-07-01 20:00:00

current_time

time with time zone

获取当前时间。

current_time

2024-07-01 20:00:00

current_timestamp

timestamp with time zone

获取当前日期和时间(一个事务的生命周期内)。

current_timestamp

2024-07-01 20:00:00

date_part(,)

double precision

用于从文本中提取指定部分的时间戳。

date_part('hour', timestamp '2001-02-16 20:38:40')

20

date_partt(,)

double precision

用于从文本中提取指定部分的时间间隔。

date_part('month', interval '2 years 3 months')

3

date_trunc(,)

timestamp

用于将一个字符串截断到指定的精度。

date_trunc('hour', timestamp '2001-02-16 20:38:40')

2001-02-16 20:00:00

date_trunc(,,)

timestamp with time zone

用于在指定的时区截断到指定的精度。

date_trunc('day', timestamptz '2001-02-16 20:38:40+00', 'Australia/Sydney')

2001-02-16 13:00:00+00

date_trunc(,)

interval

用于将一个时间间隔截断到指定的时间单位。

date_trunc('hour', interval '2 days 3 hours 40 minutes')

2 days 03:00:00

extract(timestamp)

double precision

用于从时间戳中提取特定的字段(如小时)。

extract(hour from timestamp '2001-02-16 20:38:40')

20

extract(interval)

double precision

用于从时间间隔中提取特定的时间单位。

extract(month from interval '2 years 3 months')

3

isfinite()

boolean

检查一个日期是否是有限的。如果是有限的则返回true,否则返回false。

isfinite(date '2001-02-16')

true

isfinite()

boolean

检查一个时间戳是否是有限的。如果是有限的则返回true,否则返回false。

isfinite(timestamp '2001-02-16 21:28:30')

true

isfinite()

boolean

检查一个时间间隔是否是有限的。如果是有限的则返回true,否则返回false。

isfinite(interval '4 hours')

true

justify_days(

interval

将以天为单位的时间间隔调整为以月为单位的时间间隔。

justify_days(interval '35 days')

1 mon 5 days

justify_hours()

interval

将以小时为单位的时间间隔调整为以天为单位的时间间隔。

justify_hours(interval '27 hours')

1 day 03:00:00

justify_interval()

interval

将时间间隔按照指定单位进行调整。

justify_interval(interval '1 mon -1 hour')

29 days 23:00:00

localtime

time

获取服务器的当前的本地日期和时间。

localtime

2024-07-01 08:15:23

localtimestamp

timestamp

获取服务器当前的本地日期和时间,包括到秒或毫秒级别的精度。

localtimestamp

2024-07-01 08:15:23

make_date(,,)

date

用于根据指定的年、月、日三个整数参数创建一个日期类型的值。

make_date(2013, 7, 15)

2013-07-15

make_interval(DEFAULT 0,DEFAULT 0,DEFAULT 0,DEFAULT 0,DEFAULT 0,DEFAULT 0,DEFAULT 0.0)

interval

用于根据指定的年、月、周、日、时、分、秒创建一个时间间隔值。

make_interval(days => 10)

10 days

make_time(,,)

time

用于根据指定的小时、分钟和秒(可含小数表示更细粒度的时间单位)创建一个时间类型的值。

make_time(8, 15, 23.5)

08:15:23.5

make_timestamp(,,,,,)

timestamp

用于根据指定的年、月、日、小时、分钟和秒(可含小数表示更细粒度的时间单位)创建一个日期时间类型的值。

make_timestamp(2013, 7, 15, 8, 15, 23.5)

2013-07-15 08:15:23.5

make_timestamptz(,,,,,, [])

timestamp with time zone

用于根据指定的年、月、日、小时、分钟、秒(可含小数表示更细粒度的时间单位)以及可选的时区信息创建一个带时区的时间戳类型的值。

make_timestamptz(2013, 7, 15, 8, 15, 23.5)

2013-07-15 08:15:23.5+01

now()

timestamp with time zone

返回当前事务开始时的时间戳。

now()

2024-07-01 08:15:23.5+01

statement_timestamp()

timestamp with time zone

返回当前查询或命令开始执行时的日期和时间。

statement_timestamp()

2024-07-01 08:15:23.5+01

timeofday()

text

返回当前的时间(通常是小时、分钟、秒)。

timeofday()

2024-07-01 08:15:23.5+01

transaction_timestamp()

timestamp with time zone

用于获取当前事务开始时的时间戳。

transaction_timestamp()

2024-07-01 08:15:23.5+01

to_timestamp()

timestamp with time zone

把Unix时间(从 1970-01-01 00:00:00+00 开始的秒)转换成日期时间格式。

to_timestamp(1284352323)

2010-09-13 04:32:03+00

时间、日期操作符

操作符

用法示例

示例结果

+

date '2001-09-28' + integer '7'

date '2001-10-05'

+

date '2001-09-28' + interval '1 hour'

timestamp '2001-09-28 01:00:00'

+

date '2001-09-28' + time '03:00'

timestamp '2001-09-28 03:00:00'

+

interval '1 day' + interval '1 hour'

interval '1 day 01:00:00'

+

timestamp '2001-09-28 01:00' + interval '23 hours'

timestamp '2001-09-29 00:00:00'

+

time '01:00' + interval '3 hours'

time '04:00:00'

-

- interval '23 hours'

interval '-23:00:00'

-

date '2001-10-01' - date '2001-09-28'

integer '3'(days)

-

date '2001-10-01' - integer '7'

date '2001-09-24'

-

date '2001-09-28' - interval '1 hour'

timestamp '2001-09-27 23:00:00'

-

time '05:00' - time '03:00'

interval '02:00:00'

-

time '05:00' - interval '2 hours'

time '03:00:00'

-

timestamp '2001-09-28 23:00' - interval '23 hours'

timestamp '2001-09-28 00:00:00'

-

interval '1 day' - interval '1 hour'

interval '1 day -01:00:00'

-

timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00'

interval '1 day 15:00:00'

*

900 * interval '1 second'

interval '00:15:00'

*

21 * interval '1 day'

interval '21 days'

*

double precision '3.5' * interval '1 hour'

interval '03:30:00'

/

interval '1 hour' / double precision '1.5'

interval '00:40:00'