PostgreSQL日期加减、获取当前日期

--当前日期减月
select to_char(CURRENT_DATE - INTERVAL'3 month','yyyymm')
--当前日期减年
select to_char(CURRENT_DATE - INTERVAL'1 year','yyyy')
--当前日期减天
select to_char(CURRENT_DATE - INTERVAL'1 day','yyyymmdd')

日期/时间运算符

PostgreSQL提供了许多函数,这些函数返回与当前日期和时间相关的值。这些 SQL 标准函数都根据当前事务的开始时间返回值:

CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TIME(precision)
CURRENT_TIMESTAMP(precision)
LOCALTIME
LOCALTIMESTAMP
LOCALTIME(precision)
LOCALTIMESTAMP(precision)

CURRENT_TIME并提供具有时区的价值; 并提供无时区的价值。CURRENT_TIMESTAMPLOCALTIMELOCALTIMESTAMP

CURRENT_TIME、 、 和 可以选择采用精度参数,这将导致结果在秒字段中舍入为那么多小数位数。如果没有精度参数,则结果将给出为完全可用的精度。CURRENT_TIMESTAMPLOCALTIMELOCALTIMESTAMP

一些例子:

SELECT CURRENT_TIME;
Result: 14:39:53.662522-05

SELECT CURRENT_DATE;
Result: 2001-12-23

SELECT CURRENT_TIMESTAMP;
Result: 2001-12-23 14:39:53.662522-05

SELECT CURRENT_TIMESTAMP(2);
Result: 2001-12-23 14:39:53.66-05

SELECT LOCALTIMESTAMP;
Result: 2001-12-23 14:39:53.662522

由于这些函数返回当前事务的开始时间,因此它们在事务期间不会更改。这被认为是一个特征:目的是允许单个事务具有一致的"当前"时间概念,以便同一事务中的多个修改具有相同的时间戳。注意:其他数据库系统可能会更频繁地提升这些值。

PostgreSQL还提供了返回当前语句的开始时间的函数,以及调用函数时的实际当前时间。非 SQL 标准时间函数的完整列表如下:

transaction_timestamp()
statement_timestamp()
clock_timestamp()
timeofday()
now()

transaction_timestamp()等价于 ,但命名是为了清楚地反映它返回的内容。 返回当前语句的开始时间(更具体地说,从客户端接收最新命令消息的时间)。 并在事务的第一个命令期间返回相同的值,但在后续命令期间可能会有所不同。 返回实际的当前时间,因此即使在单个 SQL 命令中,其值也会更改。 是一个历史 PostgreSQL 函数。例如,它返回实际的当前时间,但作为格式化字符串而不是值。 是一个传统的 PostgreSQL,相当于 。CURRENT_TIMESTAMPstatement_timestamp()statement_timestamp()transaction_timestamp()clock_timestamp()timeofday()clock_timestamp()texttimestamp with time zonenow()transaction_timestamp()

所有日期/时间数据类型也接受特殊文本值来指定当前日期和时间(同样,解释为事务开始时间)。因此,以下三个都返回相同的结果:now

SELECT CURRENT_TIMESTAMP;
SELECT now();
SELECT TIMESTAMP 'now';  -- but see tip below

原文档链接:https://www.postgresql.org/docs/11/functions-datetime.html?spm=a2c4g.11186623.0.0.71322fdbLGtRuP

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐