PostgreSQL 时间/日期函数和操作符
日期/时间操做符
证明演示了基本算术操作符的行为(+,*,等):
操作符 | 例子 | 结果 |
---|---|---|
+ | 日期'2001-09-28'+整数'7' | 日期“ 2001-10-05” |
+ | 日期'2001-09-28'+间隔'1小时' | 一场'2001-09-28 01:00:00' |
+ | 日期“ 2001-09-28” +时间“ 03:00” | 一场'2001-09-28 03:00:00' |
+ | 间隔“ 1天” +间隔“ 1小时” | 间隔“ 1天01:00:00” |
+ | 最佳“ 2001-09-28 01:00” +间隔“ 23小时” | 一流'2001-09-29 00:00:00' |
+ | 时间“ 01:00” +间隔“ 3小时” | 时间'04:00:00' |
-- | -间隔“ 23小时” | 间隔'-23:00:00' |
-- | 日期'2001-10-01'-日期'2001-09-28' | 整体“ 3”(天) |
-- | 日期'2001-10-01'-整体'7' | 日期“ 2001-09-24” |
-- | 日期'2001-09-28'-间隔'1小时' | 一场'2001-09-27 23:00:00' |
-- | 时间'05:00'-时间'03:00' | 间隔'02:00:00' |
-- | 时间'05:00'-间隔'2小时' | 时间'03:00:00' |
-- | timestamp'2001-09-28 23:00'-间隔'23 hours' | 一流'2001-09-28 00:00:00' |
-- | 间隔“ 1天”-间隔“ 1小时” | 间隔“ 1天-01:00:00” |
-- | 一场'2001-09-29 03:00'-一场'2001-09-27 12:00' | 间隔“ 1天15:00:00” |
* | 900 *间隔“ 1秒” | 间隔'00:15:00' |
* | 21 *间隔“ 1天” | 间隔“ 21天” |
* | 双精度'3.5'*间隔'1小时' | 间隔'03:30:00' |
/ | 间隔“ 1小时” /双精度“ 1.5” | 间隔'00:40:00' |
日期/时间函数
功能 | 返回类型 | 描述 | 例子 | 结果 |
---|---|---|---|---|
age(timestamp, timestamp)
|
间隔 | 最初参数后的“符号化”结果,使用年和月,不只是使用天 | 年龄(至少“ 2001-04-10”,只能“ 1957-06-13”) | 43年9个月27天 |
age(timestamp)
|
间隔 | 从
current_date 最初参数后的结果(在午夜)
|
年龄(每年“ 1957-06-13”) | 43年8个月3天 |
clock_timestamp()
|
带时区的预算 | 实时时钟的当前最佳(在语句执行时变化) | ||
current_date
|
日期 | 当前的日期; | ||
current_time
|
带时区的时间 | 当日时间; | ||
current_timestamp
|
带时区的预算 | 当前事务开始时的合理; | ||
date_part(text, timestamp)
|
双精度 | 获取子域(等效于
extract );
|
date_part(“小时”,预期“ 2001-02-16 20:38:40') | 20 |
date_part(text, interval)
|
双精度 | 获取子域(等效于
extract );
|
date_part(“月”,间隔“ 2年3个月”) | 3 |
date_trunc(text, timestamp)
|
最好记 | 截断成指定的精度; | date_trunc(“小时”,分为“ 2001-02-16 20:38:40') | 2001-02-16 20:00:00 |
date_trunc(text, interval)
|
间隔 | 截取指定的精度, | date_trunc('小时',间隔'2天3小时40分钟') | 2天03:00:00 |
extract (初步记中的起点)
|
双精度 | 获取子域 | 摘录(从预设'2001-02-16 20:38:40'开始的小时数) | 20 |
extract (间隔的最高)
|
双精度 | 获取子域 | 摘录(间隔“ 2年3个月”中的月份) | 3 |
isfinite(date)
|
布尔值 | 测试是否为有穷日期(不是+/-无穷) | 无限(日期'2001-02-16') | 真正 |
isfinite(timestamp)
|
布尔值 | 测试是否为有穷困(不是+/-无穷) | 无限(至少'2001-02-16 21:28:30') | 真正 |
isfinite(interval)
|
布尔值 | 测试是否为有穷时间间隔 | 无限(间隔“ 4小时”) | 真正 |
justify_days(interval)
|
间隔 | 按照每月30天调整时间间隔 | justify_days(间隔“ 35天”) | 1星期一5天 |
justify_hours(interval)
|
间隔 | 按照每天24小时调整时间间隔 | justify_hours(间隔“ 27小时”) | 1天03:00:00 |
justify_interval(interval)
|
间隔 | 使用
justify_days 和
justify_hours 调整时间间隔的同时进行正负号调整
|
justify_interval(间隔'1周一-1小时') | 29天23:00:00 |
localtime
|
时间 | 当日时间; | ||
localtimestamp
|
最好记 | 当前事务开始时的合理; | ||
make_date(year int, month int, day int)
|
日期 |
为年,月和日划分创建日期 | make_date(2013,7,15) | 2013-07-15 |
make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)
|
间隔 |
从年,月,周,天,小时,分钟和秒分段中创建间隔 |
make_interval(天数== 10) |
10天 |
make_time(hour int,
|
时间 | 从小时,分钟和秒分段中创建时间 | make_time(8,15,23.5) | 08:15:23.5 |
make_timestamp(year int, month int, day int, hour int, min int, sec double precision)
|
最好记 |
从年,月,日,小时,分钟和秒分段中创建初始 |
make_timestamp(2013、7、15、8、15、23.5) |
2013-07-15 08:15:23.5 |
make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])
|
带时区的预算 |
从指定年期,使用当前的时区。 |
make_timestamptz(2013、7、15、8、15、23.5) |
2013-07-15 08:15:23.5 + 01 |
now()
|
带时区的预算 | 当前事务开始时的合理; | ||
statement_timestamp()
|
带时区的预算 | 实时时钟的当前最佳; | ||
timeofday()
|
文字 | 与
clock_timestamp 相同,但结果是一个文本字符串;
|
||
transaction_timestamp()
|
带时区的预算 | 当前事务开始时的合理; |