Sql 博士后:Don';如果当前时间在范围内,则不运行查询

Sql 博士后:Don';如果当前时间在范围内,则不运行查询,sql,postgresql,postgresql-9.5,Sql,Postgresql,Postgresql 9.5,我有一个查询,需要每小时运行一次,以便在查询返回任何数据时发送警报。为了避免在下班时间收到更改,如果当前时间在东部时间上午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 I

我有一个查询,需要每小时运行一次,以便在查询返回任何数据时发送警报。为了避免在下班时间收到更改,如果当前时间在东部时间上午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条件下就行了

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
AND CURRENT_TIME BETWEEN '00:00:00' AND '07:00:00'
LIMIT 1;

但是,我可能会使用类似于

的东西,只是将子句置于WHERE条件中

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
AND CURRENT_TIME BETWEEN '00:00:00' AND '07:00:00'
LIMIT 1;

但是,我可能会使用类似于

的内容,为什么不将其添加到WHERE子句?为什么不将其添加到WHERE子句?