什么是Oracle的SYSDATE的PostgreSQL等价物?

use*_*917 52 oracle postgresql

我想使用sysdate执行查询,如:

select up_time from exam where up_time like sysdate
Run Code Online (Sandbox Code Playgroud)

这在Oracle中是可能的.

但是,似乎PostgreSQL不支持sysdate.我在postgres文档中找不到sysdate.PostgreSQL中sysdate的替代品是什么?

a_h*_*ame 71

SYSDATE 是Oracle唯一的功能.

ANSI标准定义current_datecurrent_timestamp其中通过的Postgres支撑并在手册中记载:
http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

(顺便说一句:Oracle也支持CURRENT_TIMESTAMP)

你应该注意的区别current_timestamp,statement_timestamp()以及clock_timestamp()(这是说明书中的说明,请参见上面的链接)


这个说法:

select up_time from exam where up_time like sysdate

根本没有任何意义.在Oracle和Postgres中都没有.如果您想从"今天"获取行,您需要以下内容:

select up_time 
from exam 
where up_time = current_date
Run Code Online (Sandbox Code Playgroud)

请注意,在Oracle中,您可能希望trunc(up_time) = trunc(sysdate)摆脱Oracle中始终包含的时间部分.


小智 11

NOW()是 Postgres 中 Oracle Sysdate 的替代品。

尝试“ Select now() ”,它会给你系统时间戳。


小智 7

以下函数可用于获取 PostgreSQL 中的当前日期和/或时间

CURRENT_TIME

CURRENT_DATE

CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

例子

SELECT CURRENT_TIME;
08:05:18.864750+05:30

SELECT CURRENT_DATE;
2020-05-14

SELECT CURRENT_TIMESTAMP;
2020-05-14 08:04:51.290498+05:30
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 文档

  • [不要使用 CURRENT_TIME](https://wiki.postgresql.org/wiki/Don%27t_Do_This#Don.27t_use_CURRENT_TIME) (2认同)

小智 5

您可能想使用statement_timestamp()。这给出了语句执行时的时间戳。而NOW()CURRENT_TIMESTAMP给出事务开始时的时间戳。

手册中有更多详细信息