Sql 博士后:Don';如果当前时间在范围内,则不运行查询
我有一个查询,需要每小时运行一次,以便在查询返回任何数据时发送警报。为了避免在下班时间收到更改,如果当前时间在东部时间上午12点到上午7点之间,我不希望运行此查询 以下是SQL在其当前状态下的外观: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
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子句?