选择没有几天小时的行

时间:2014-05-19 18:58:42

标签: sql postgresql datetime

我有一个带有日期列的表。我想要检索不属于周日7,8,9小时,星期一8,9,10小时的记录,依此类推。我该怎么做呢。

如果我使用"和"条款"不在"然后所有的行都消失了,不仅仅是几个小时。

select * from xyz
where (EXTRACT(dow from created) not in (0)
and    EXTRACT(HOUR FROM created) not in (8,9,10)) 

然后周日的所有行都消失了。

2 个答案:

答案 0 :(得分:0)

select *
from xyz
where
    (
        EXTRACT(dow from created) = 0
        and
        EXTRACT(HOUR FROM created) not in (7,8,9)
    )
    or
    (
        EXTRACT(dow from created) = 1
        and
        EXTRACT(HOUR FROM created) not in (8,9,10)
    )
    or extract(dow from created) in (2,3,4,5,6)

答案 1 :(得分:0)

假设timestamp列:

SELECT *
FROM   xyz
WHERE  CASE EXTRACT(dow FROM created)
         WHEN 0 THEN EXTRACT(h FROM created) NOT IN (7,8,9)
         WHEN 1 THEN EXTRACT(h FROM created) NOT IN (8,9,10)
         -- other day ...
         ELSE TRUE  -- remaining days pass as a whole
       END
相关问题