承接国内外服务器租用托管、定制开发、网站代运营、网站seo优化托管接单、网站代更新,新老站点皆可!!咨询QQ:3787320601

PostgreSQL中经常使用的时间日期脚本使用教程

管理员 2023-05-25 07:57:32 网站建设 20 ℃ 0 评论 5686字 收藏

PostgreSQL中经常使用的时间日期脚本使用教程

获得系统时间函数

select now(); –2013⑴1⑵8 16:20:25.259715+08
select current_timestamp; –2013⑴1⑵8 16:20:38.815466+08
select current_date; –2013⑴1⑵8
select current_time; –16:21:08.981171+08

时间的计算
–使用interval

select now()+interval ‘2 day’; –2013⑴1⑶0 16:21:47.610118+08 2天后
select now()-interval ‘2 day’; –2013⑴1⑵6 16:22:03.390593+08 2天前
select now()+interval ‘2 hour’; –2013⑴1⑵8 18:22:14.578733+08 2小时后

— interval可以不写,其值可以是

— Abbreviation Meaning
— Y Years
— M Months (in the date part)
— W Weeks
— D Days
— H Hours
— M Minutes (in the time part)

时间的截取 
–使用extract extract(interval,timestamp);

select extract(year from now()); –2013
select extract(mon from now()); –5月份

时间的转换

select timestamp ‘2012-05⑴2 18:54:54’; –2012-05⑴2 18:54:54
select date ‘2012-05⑴2 18:54:54’; –2012-05⑴2
select time ‘2012-05⑴2 18:54:54’; –18:54:54
select TIMESTAMP WITH TIME ZONE ‘2012-05⑴2 18:54:54’ –2012-05⑴2 18:54:54+08

与unix时间戳的转换 

SELECT TIMESTAMP ‘epoch’ + 1341174767 * INTERVAL ‘1 second’;
–2012-07-01 20:32:47

实例
1.当前时间/日期/时间戳
获得当前时间的方式有很多种,在这之前我们需要知道以下两种类型的区分:
总是返回当前的值 (clock_timestamp())
总是返回当前值,但在事务中它返回的是事务开始的时间(now())
让我们看下面这个例子

postgres=# BEGIN;
postgres=# SELECT now();
now
——————————-
2013-08⑵6 12:17:43.182331+02

postgres=# SELECT now();
now
——————————-
2013-08⑵6 12:17:43.182331+02

postgres=# SELECT clock_timestamp();
clock_timestamp
——————————-
2013-08⑵6 12:17:50.698413+02

postgres=# SELECT clock_timestamp();
clock_timestamp
——————————-
2013-08⑵6 12:17:51.123905+02

你会发现,语句履行时候clock_timestamp()的返回值每次都产生了改变,但是now()总是返回相同的值。当你需要斟酌时区时,你应当特别注意这两个函数差异。

2.时间区间:比如3天前
使用interval操作符你可以轻松的构建一个时间区间,例如

interval ‘1 day’
interval ‘5 days’
interval ‘5 days’ + interval ‘3 hours’
interval ‘5 days 3 hours’

你可以看到,我们可以用interval操作符来简单的进行数学运算,这特别合适于构建例如3天前这样的时间区间,比如:

postgres=# SELECT now() – interval ‘3 days’;
?column?
——————————-
2013-08⑵3 12:23:40.069717+02

3.获得星期几
有些时候对一个给定的时间,你仅仅只想知道的是这天是星期几或是它属于那个世纪的更或你只想知道它是一年中的第几天。PostgreSQL中的extract()函数提供了这类功能。
以下例子是在8月26日 星期一进行测试的。

postgres=# SELECT extract(DAY FROM now());
date_part
———–
26

postgres=# SELECT extract(DOW FROM now());
date_part
———–
1

4.时区转换
有些时候,时区转换对特定时间在区别时区显示特别有用。AT TIME ZONE提供了这类功能,它是怎么做到的?我们将在一个事务中进行演示,由于同一事务中now()函数总是返回相同的值,从而我们可以很容易看到同一时间在区别时区显示的差别。

postgres=# BEGIN;
BEGIN
postgres=# SELECT now();
now
——————————-
2013-08⑵6 12:39:39.122218+02

postgres=# SELECT now() AT TIME ZONE ‘GMT’;
timezone
—————————-
2013-08⑵6 10:39:39.122218

postgres=# SELECT now() AT TIME ZONE ‘GMT+1’;
timezone
—————————-
2013-08⑵6 09:39:39.122218

postgres=# SELECT now() AT TIME ZONE ‘PST’;
timezone
—————————-
2013-08⑵6 02:39:39.122218

文章来源:丸子建站

文章标题:PostgreSQL中经常使用的时间日期脚本使用教程

https://www.wanzijz.com/view/42044.html

X

截屏,微信识别二维码

微信号:weimawl

(点击微信号复制,添加好友)

打开微信