我们不会感到惊讶,当我们用钢轨的人看到5周。from_nowor3。天。+ 2.hours,例如,以同样的方式,它能做到的,你可以通过简单地调用PostgreSQL内置函数一样的功能。

当前时间日期/时间戳

获取当前时间有很多方法,在此之前我们需要知道以下两种类型的差异:

总是返回当前值(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返回值()改变每次执行语句,但现在()始终返回相同的值。当你需要考虑时区,你应该特别注意这两个函数之间的差异。

时间间隔:例如,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





提取()还有其他更强大的功能。有关详情,请参阅官方文件,其中只有少数列出。


世纪
道琼斯指数(星期天)
Doy(年月日)
分钟






时区转换

在某些情况下,时区转换在不同时间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