Postgres:如果当前时间在范围内,请不要运行查询

时间:2017-05-19 16:33:25

标签: 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 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

1 个答案:

答案 0 :(得分:0)

只需将该子句置于WHERE条件中即可。

const {currentUser} = firebase.auth();
firebase.database().ref(`/friendships/${currentUser.uid}`).on('value, snapshot => { //redux dispatch action, payload: snapshot.val() })

但是,我可能会使用像pg_cron

这样的东西