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

时间:2013-06-06 11:00:49

标签: oracle postgresql

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

select up_time from exam where up_time like sysdate

这在Oracle中是可能的。

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

4 个答案:

答案 0 :(得分:64)

SYSDATE是Oracle唯一的功能。

ANSI标准定义current_datecurrent_timestamp,其中 由Postgres支持并记录在手册中:
http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

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

您应该注意current_timestampstatement_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

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

答案 1 :(得分:3)

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

CURRENT_TIME

CURRENT_DATE

CURRENT_TIMESTAMP

示例

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

postgresql docs

答案 2 :(得分:2)

NOW()是Postgres中Oracle Sysdate的替换。

尝试“ 立即选择() ”,它将为您提供系统时间戳。

答案 3 :(得分:0)

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

the manual

中的更多详细信息