PostgreSQL中筛选TIMESTAMP_START小时在18:00-09:00的数据方法咨询
在PostgreSQL中实现符合条件的数据筛选
这在PostgreSQL里操作起来非常简单,我们可以通过内置的时间函数轻松实现需求,下面提供两种直观的实现方案:
方案一:提取小时数进行范围判断
利用EXTRACT(HOUR FROM ...)函数提取TIMESTAMP_START的小时部分,直接判断小时是否落在**18-23(当天晚6点到午夜)或0-9(午夜到次日早9点)**区间:
SELECT OBJECT, TIMESTAMP_START, TIMESTAMP_END FROM your_table_name -- 替换成你的实际表名 WHERE EXTRACT(HOUR FROM TIMESTAMP_START) BETWEEN 18 AND 23 OR EXTRACT(HOUR FROM TIMESTAMP_START) BETWEEN 0 AND 9;
方案二:直接比较时间部分
将TIMESTAMP_START转换为纯时间类型(仅保留时分秒),然后判断该时间是否晚于等于18:00,或早于等于09:00:
SELECT OBJECT, TIMESTAMP_START, TIMESTAMP_END FROM your_table_name -- 替换成你的实际表名 WHERE TIME(TIMESTAMP_START) >= '18:00:00' OR TIME(TIMESTAMP_START) <= '09:00:00';
效果说明
用你提供的测试数据,以上两个查询都会精准返回Dog和Cat的记录,完全匹配需求。
操作难度
这两种方法都极其容易上手,只需要基础的SQL语法和PostgreSQL时间函数常识,替换表名后就能直接运行,没有复杂的逻辑门槛。
内容的提问来源于stack exchange,提问作者defekas17
相关产品推荐
相关产品推荐

