12

这个适用于 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 »  

有任何想法吗 ?

4

3 回答 3

23

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

您可以(例如)使用;

NOW() - '30 MINUTES'::INTERVAL

...或者...

NOW() - INTERVAL '30' MINUTE

...或者...

NOW() - INTERVAL '30 MINUTES'

作为替代品。

一个包含所有 3 个测试的 SQLfiddle

于 2013-05-01T14:24:42.347 回答
0

区间文字需要单引号:

INTERVAL '30' MINUTE

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

and (h > current_timestamp - interval '30' minute)
于 2013-05-01T14:21:16.143 回答
0

尝试使用类似的东西:

select ... 
from ... 
where id = ... 
  and  h > now() - INTERVAL '30 MINUTE' 
于 2013-05-01T14:21:43.827 回答