date_sub ok用mysql,ko用postgresql

时间:2013-05-01 14:16:09

标签: sql postgresql

这个与mySQL一起使用的查询不适用于Postgresql:

select ... from ... where (id = ... and ( h > date_sub(now(), INTERVAL 30 MINUTE)))  

错误是:

Query failed: ERREUR:  erreur de syntaxe sur ou près de « 30 »  

有什么想法吗?

3 个答案:

答案 0 :(得分:13)

DATE_SUB是PostgreSQL中不存在的MySQL函数。

您可以(例如)使用;

NOW() - '30 MINUTES'::INTERVAL

...或...

NOW() - INTERVAL '30' MINUTE

...或...

NOW() - INTERVAL '30 MINUTES'

作为替代品。

An SQLfiddle with all 3 to test with

答案 1 :(得分:0)

区间文字需要单引号:

INTERVAL '30' MINUTE

你可以使用常规的“算术”:

and (h > current_timestamp - interval '30' minute)

答案 2 :(得分:0)

尝试使用以下内容:

select ... 
from ... 
where id = ... 
  and  h > now() - INTERVAL '30 MINUTE'