sql - 选择没有几个小时的一天的行

标签 sql postgresql datetime

我有一个包含日期列的表格。我想检索不属于星期日 7、8、9、星期一 8、9、10 等的记录。我该怎么做呢。

如果我使用带有“not in”的“and”子句,那么所有行都会消失,而不仅仅是几个小时。

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

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

最佳答案

假设 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

关于sql - 选择没有几个小时的一天的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23745226/

相关文章:

sql - Select 语句中的列名无效

mysql - Sql时间戳字段的正确使用

python - 在 Postgres/PostGIS 中迁移 django 模型没有反射(reflect)

python - Django 迁移失败

postgresql - 任务管理器中的许多 PostgreSQL 进程

MySQL事件根据表DATETIME执行

sql - 消息 2760,级别 16,状态 1,第 5 行指定的架构名称 "items"不存在或您无权使用它

sql - 删除重复的 Oracle xmlagg 列表

javascript - 查找两个日期之间的差异代码在 Firefox(版本 40.0.3)中不起作用

c# - 以短格式显示日期(4 月 2 日)