2013-05-01 228 views
4

該查詢與MySQL的工作並不在PostgreSQL工作:DATE_SUB確定與MySQL,KO在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 » 

任何想法?

回答

13

DATE_SUB是一個MySQL函數在PostgreSQL中不存在。

您可以(例如)使用;

NOW() - '30 MINUTES'::INTERVAL 

......或者......

NOW() - INTERVAL '30' MINUTE 

......或者......

NOW() - INTERVAL '30 MINUTES' 

作爲替換。

An SQLfiddle with all 3 to test with

+2

不需要MySQL中的DATE_SUB,NOW() - INTERVAL'30'MINUTE也適用於MySQL。 – 2013-05-02 06:02:48

0

的間隔文字需要單引號:

INTERVAL '30' MINUTE 

你也可以使用常規的 「算術」:

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

嘗試使用類似:

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