【发布时间】:2017-05-19 16:33:25
【问题描述】:
如果查询返回任何数据,我有一个查询需要每小时运行一次以发送警报。为避免在非工作时间收到更改,如果当前时间在美国东部标准时间上午 12 点到上午 7 点之间,我不希望运行此查询。
以下是 SQL 在其当前状态下的样子:
SELECT * FROM (
SELECT FLOOR(EXTRACT(EPOCH FROM (now() - updated_at))/60) :: INT as minutes_since_update
FROM table_a
WHERE column_a IS TRUE AND column_b IS NULL
LIMIT 1) a
WHERE minutes_since_update > 60
如何更改此查询,使其不会在非工作时间运行。
我试过这个,但我不清楚为什么它不起作用。
SELECT * FROM (
IF (SELECT CURRENT_TIME BETWEEN '04:00:00' AND '11:00:00') THEN
SELECT 0 as minutes_since_update FROM table_a where true = false;
ELSE
SELECT FLOOR(EXTRACT(EPOCH FROM (now() - updated_at))/60) :: INT as minutes_since_update
FROM table_a
WHERE column_a IS TRUE AND column_b IS NULL
LIMIT 1;
END IF;
) a
WHERE minutes_since_update > 60
【问题讨论】:
-
为什么不将其添加到 WHERE 子句中?
标签: sql postgresql postgresql-9.5