最近偶有开发同事咨询 PostgreSQL 日期函数,对日期处理不太熟悉,今天
详细看了下手册的日期函数,整理如下,供参考。
一 取当前日期的函数
--取当前时间
skytf=> select now();
now
-------------------------------
2011-06-03 14:45:43.633466+08
(1 row)
skytf=> select current_timestamp;
now
-------------------------------
2011-06-03 14:46:58.768399+08
--取当前时间的日期
skytf=> select current_date;
date
------------
2011-06-03
(1 row)
--取当前具体时间 (除去日期)
skytf=> select current_time;
timetz
--------------------
14:46:29.404942+08
(1 row)
二 日期的加减
skytf=> select now();
now
-------------------------------
2011-06-03 14:54:04.771193+08
(1 row)
--表示三天后
skytf=> select now() + interval '3 day';
?column?
-------------------------------
2011-06-06 14:54:06.119683+08
(1 row)
--表示三天前
skytf=> select now() - interval '3 day';
?column?
-------------------------------
2011-05-31 14:54:10.060558+08
(1 row)
--表示1小时后
skytf=> select now() + interval '1 hour';
?column?
-------------------------------
2011-06-03 15:55:24.600172+08
(1 row)
--表示1小时前
skytf=> select now() - interval '1 hour';
?column?
-------------------------------
2011-06-03 13:55:25.799537+08
(1 row)
(1 row)
--表示10分钟后
skytf=> select now() + interval '10 minutes';
?column?
-------------------------------
2011-06-03 15:06:23.363667+08
(1 row)
--表示10分钟前
skytf=> select now() - interval '10 minutes';
?column?
-------------------------------
2011-06-03 14:46:13.899526+08
三 取时间字段的部分值
在开发过程中,经常要取日期的年,月,日,小时等值,PostgreSQL 提供一个非常便利的EXTRACT函数。
--EXTRACT函数解释
EXTRACT(field FROM source): field 表示取的时间对象, source 表示取的日期来源,类型为 timestamp。
下面是一些例子。
--取年份
skytf=> select extract (year from now());
date_part
-----------
2011
(1 row)
--取月份
skytf=> select extract (month from now());
date_part
-----------
6
(1 row)
--取day
skytf=> select extract(day from now());
date_part
-----------
3
(1 row)
skytf=> select extract(day from timestamp '2011-06-03');
date_part
-----------
3
(1 row)
skytf=> select timestamp '2011-06-03';
timestamp
---------------------
2011-06-03 00:00:00
(1 row)
--取小时
skytf=> select extract (hour from now());
date_part
-----------
14
(1 row)
--取分钟
skytf=> select extract (minute from now());
date_part
-----------
59
(1 row)
--取秒
skytf=> select extract (second from now());
date_part
-----------
46.039333
(1 row)
--取所在哪个星期
skytf=> select extract (week from now());
date_part
-----------
22
(1 row)
四 总结
上面只是 PostgreSQL 日期函数的基本用法,希望这些对大家应用 PostgreSQL
起到一定作用。