日期时间函数和运算符

日期时间运算符

操作符例子结果
+date '2012-08-08' + interval '2' day2012-08-10
+time '01:00' + interval '3' hour04:00:00.000
+timestamp '2012-08-08 01:00' + interval '29' hour2012-08-09 06:00:00.000
+timestamp '2012-10-31 01:00' + interval '1' month2012-11-30 01:00:00.000
+interval '2' day + interval '3' hour2 03:00:00.000
+interval '3' year + interval '5' month3-5
-date '2012-08-08' - interval '2' day2012-08-06
-time '01:00' - interval '3' hour22:00:00.000
-timestamp '2012-08-08 01:00' - interval '29' hour2012-08-06 20:00:00.000
-timestamp '2012-10-31 01:00' - interval '1' month2012-09-30 01:00:00.000
-interval '2' day - interval '3' hour1 21:00:00.000
-interval '3' year - interval '5' month2-7

时区转换

‘AT TIME ZONE’运算符定义时间标签

SELECT timestamp '2012-10-31 01:00 UTC';
2012-10-31 01:00:00.000 UTC

SELECT timestamp '2012-10-31 01:00 UTC' AT TIME ZONE 'America/Los_Angeles';
2012-10-30 18:00:00.000 America/Los_Angeles

日期和时间函数

current_date → date:返回查询开始时的当前日期。

current_time → time with time zone:返回查询开始时的当前时间。

current_timestamp → timestamp with time zone:返回查询开始时的当前时间戳。

currenttimezone() → varchar:以IANA(例如,America / LosAngeles)定义的格式返回当前时区,或以UTC的固定偏移量(例如+08:35)返回当前时区。

fromiso8601timestamp(string) → timestamp with time zone:将ISO 8601格式化的字符串解析为具有时区的时间戳。

fromiso8601date(string) → date:将ISO 8601格式的字符串解析为日期。

rom_unixtime(unixtime) → timestamp: 返回unixtime时间戳。

from_unixtime(unixtime, string) → timestamp with time zone:返回指定时区的unixtime时间戳。

from_unixtime(unixtime, hours, minutes) → timestamp with time zone:返回为hours和minutes对应时区的unixtime时间戳。

localtime → time:返回查询开始时的当前时间。

localtimestamp → timestamp:返回查询开始时的当前时间戳。

now() → timestamp with time zone:这是current_timestam的另一种表达。

to_iso8601(x) → varchar:将x格式化为ISO 8601字符串。 x可以是date, timestamp,或带时区的timestamp。

to_unixtime(timestamp) → double:转换为unix时间戳。

注意:
以下SQL标准的函数不使用括号:
current_date
current_time
current_timestamp
localtime
localtimestamp