psql时间/日期函数和操作符

日期/时间操作符
操作符例子结果
+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'
日期/时间函数
函数返回类型描述例子结果
age(timestamptimestamp)interval减去参数,生成一个使用年、月(而不是只用日)的“符号化”的结果age(timestamp '2001-04-10', timestamp '1957-06-13')43 年 9 月 27 日
age(timestamp)intervalcurrent_date(在午夜)减去age(timestamp '1957-06-13')43 years 8 mons 3 days
clock_timestamp()timestamp with time zone当前日期和时间(在语句执行期间变化);见第 9.9.4 节  
current_datedate当前日期;见第 9.9.4 节  
current_timetime with time zone当前时间(一天中的时间);见第 9.9.4 节  
current_timestamptimestamp with time zone当前日期和时间(当前事务开始时);见第 9.9.4 节  
date_part(texttimestamp)double precision获得子域(等价于extract);见第 9.9.1 节date_part('hour', timestamp '2001-02-16 20:38:40')20
date_part(textinterval)double precision获得子域(等价于extract);见第 9.9.1 节date_part('month', interval '2 years 3 months')3
date_trunc(texttimestamp)timestamp截断到指定精度;另见第 9.9.2 节date_trunc('hour', timestamp '2001-02-16 20:38:40')2001-02-16 20:00:00
date_trunc(textinterval)interval截断到指定精度;另见第 9.9.2 节date_trunc('hour', interval '2 days 3 hours 40 minutes')2 days 03:00:00
extract(field from timestamp)double precision获得子域;见第 9.9.1 节extract(hour from timestamp '2001-02-16 20:38:40')20
extract(field from interval)double precision获得子域;见第 9.9.1 节extract(month from interval '2 years 3 months')3
isfinite(date)boolean测试有限日期(不是+/-无限)isfinite(date '2001-02-16')true
isfinite(timestamp)boolean测试有限时间戳(不是+/-无限)isfinite(timestamp '2001-02-16 21:28:30')true
isfinite(interval)boolean测试有限间隔isfinite(interval '4 hours')true
justify_days(interval)interval调整间隔这样30天时间周期可以表示为月justify_days(interval '35 days')1 mon 5 days
justify_hours(interval)interval调整间隔这样24小时时间周期可以表示为日justify_hours(interval '27 hours')1 day 03:00:00
justify_interval(interval)interval使用justify_daysjustify_hours调整间隔,使用额外的符号调整justify_interval(interval '1 mon -1 hour')29 days 23:00:00
localtimetime当前时间(一天中的时间);见第 9.9.4 节  
localtimestamptimestamp当前日期和时间(当前事务的开始);见第 9.9.4 节  
make_date(year intmonth intday int)date从年、月、日域创建日期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)interval从年、月、周、日、时、分、秒域创建 intervalmake_interval(days => 10)10 days
make_time(hour intmin intsec double precision)time从时、分、秒域创建时间make_time(8, 15, 23.5)08:15:23.5
make_timestamp(year intmonth intday inthour intmin intsec double precision)timestamp从年、月、日、时、分、秒域创建时间戳make_timestamp(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5
make_timestamptz(year intmonth intday inthour intmin intsec double precision, [ timezone text ])timestamp with time zone从年、月、日、时、分、秒域创建带时区的时间戳。如果没有指定timezone, 则使用当前时区。make_timestamptz(2013, 7, 15, 8, 15, 23.5)2013-07-15 08:15:23.5+01
now()timestamp with time zone当前日期和时间(当前事务的开始);见第 9.9.4 节  
statement_timestamp()timestamp with time zone当前日期和时间(当前事务的开始);见第 9.9.4 节  
timeofday()text当前日期和时间(像clock_timestamp,但是作为一个text字符串);见第 9.9.4 节  
transaction_timestamp()timestamp with time zone当前日期和时间(当前事务的开始);见第 9.9.4 节  
to_timestamp(double precision)timestamp with time zone把 Unix 时间(从 1970-01-01 00:00:00+00 开始的秒)转换成 timestampto_timestamp(1284352323)2010-09-13 04:32:03+00

参考文件:http://www.postgres.cn/docs/10/functions-datetime.html

拓展学习:https://www.yiibai.com/manual/postgresql/datatype-datetime.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值