一个在PostgreSQL的日期和时间使用脚本教程
获得系统时间函数现在选择();-- 2013-11-28 16:20:25.259715 + 08
选择current_timestamp;-- 2013-11-28 16:20:38.815466 + 08
选择current_date;-- 2013-11-28
选择current_time;-- 16:21:08.981171 + 08
时间的计算
利用区间
现在选择()+间隔2天;——2013-11-30 16:21:47.610118 + 08 2天后
现在选择()间隔2天;——2013-11-26 16:22:03.390593 + 08 2天前
现在选择()+间隔2小时;-- 2013-11-28 18:22:14.578733 + 08 2小时后
-间隔不能写,其值可以是
-缩写的含义
Y年
- M个月(日期部分)
w周
D日
- h
-分钟(在时间部分)
拦截时间
-使用提取提取(间隔,时间戳);
选择提取(从现在(年));2013
选择提取(从现在());5个月
时间转换
选择时间戳'2012-05-12 18:54:54;——2012-05-12 18:54:54
选择日期'2012-05-12 18:54:54;——2012-05-12
选择时间'2012-05-12 18:54:54;——18:54:54
选择时间与时区'2012-05-12 18:54:54 -- 2012-05-12 18:54:54 + 08
用unix实现时间戳的转换
选择timestamp'epoch+1341174767×间隔1秒;
——2012-07-01 20:32:47
例子
1。当前时间日期/时间戳
获取当前时间有很多方法,在此之前我们需要知道以下两种类型的差异:
总是返回当前值(clock_timestamp())
总是返回当前值,但是在事务中它返回事务开始的时间(现在())
让我们看下面的例子
Postgres = #开始;
Postgres = #现在选择();
现在
氨
2013-08-26 12:17:43.182331 + 02
Postgres = #现在选择();
现在
氨
2013-08-26 12:17:43.182331 + 02
Postgres = #选择clock_timestamp();
clock_timestamp
氨
2013-08-26 12:17:50.698413 + 02
Postgres = #选择clock_timestamp();
clock_timestamp
氨
2013-08-26 12:17:51.123905 + 02
你会发现clock_timestamp返回值()改变每次执行语句,但现在()始终返回相同的值。当你需要考虑时区,你应该特别注意这两个函数之间的差异。
2。时间间隔:例如,3天前
使用区间运算符,您可以轻松地构建一个时间间隔,例如
间隔1天
间隔5天
间隔5天+间隔3小时
间隔5天3小时
如您所见,我们可以使用区间运算符进行简单的数学运算,尤其适用于3天前建立这样一个时间间隔,例如:
Postgres = #现在选择()间隔3天;
柱
氨
2013-08-23 12:23:40.069717 + 02
三.得到周
有时,对于一个给定的时间,你只想知道天是什么或者它属于那个世纪,或者你只想知道它是一年中的第几天。这个功能是通过提取()函数在PostgreSQL提供。
下面的例子在8月26日星期一进行了测试。
Postgres = #选择提取(从现在开始());
date_part
在
二十六
Postgres = #选择提取(道琼斯指数从现在());
date_part
在
一
4。时区转换
在某些情况下,时区转换在不同时间zone.at时区的一个特定的时间是特别有用的提供了这个功能,它是如何做的呢我们将在一个事务中演示,因为现在()函数总是在同一事务中返回相同的值,因此我们可以很容易地看到在同一时间显示的不同的差异。
Postgres = #开始;
开始
Postgres = #现在选择();
现在
氨
2013-08-26 12:39:39.122218 + 02
Postgres = #现在选择()在时间zone'gmt;
时区
----------------------------
2013-08-26 10:39: 39.122218
Postgres = #现在选择()在时间zone'gmt + 1;
时区
----------------------------
2013-08-26 09:39: 39.122218
Postgres = #现在选择()在时间zone'pst;
时区
----------------------------
2013-08-26 02:39: 39.122218