PostgreSQL中根据时间段范围查询数据,如19:29:10到20:29:10范围内的数据,排除年月日

数据格式如下

问题描述

我的SQL语句条件是

sql 复制代码
WHERE (TO_CHAR(cti.binder_gen_time, 'YYYY-MM-DD HH:mm:ss')  >= '19:29:10' 
       AND TO_CHAR(cti.binder_gen_time, 'YYYY-MM-DD HH:mm:ss')  <= '20:29:10')

为什么我数据的时间是2023-07-20 17:58:29也能被查出来?

问题解决

因为TO_CHAR函数的第二个参数是用于指定时间格式的字符串。在SQL语句中,使用了'YYYY-MM-DD HH:mm:ss'这个格式字符串。这意味着,binder_gen_time字段的时区也会被考虑在内。

如果想要在比较时忽略时区,可以将格式字符串修改为'YYYY-MM-DD HH24:MI:SS'。这个格式字符串将不会包含时区部分。

修改后的SQL语句如下:

sql 复制代码
WHERE (TO_CHAR(cti.binder_gen_time, 'YYYY-MM-DD HH24:MI:SS') >= '19:29:10'   
       AND TO_CHAR(cti.binder_gen_time, 'YYYY-MM-DD HH24:MI:SS') <= '20:29:10')

但是我的需求是,只想要时间段范围内的数据,年月日无所谓。这时我们可以直接把YYYY-MM-DD去掉即可,如下所示:

sql 复制代码
WHERE (TO_CHAR(cti.binder_gen_time, 'HH24:MI:SS') >= '19:29:10'   
       AND TO_CHAR(cti.binder_gen_time, 'HH24:MI:SS') <= '20:29:10')
相关推荐
文人sec24 分钟前
MYSQL:insert...select:为什么锁源表的所有行和间隙?怎么最快地复制一张表?
数据库·python·mysql
oradh1 小时前
Oracle联机日志文件损坏故障总结
数据库·oracle·oracle联机日志文件损坏
IvorySQL1 小时前
PostgreSQL 日报|8 字节 TOAST 值支持(9 月 16 日)
数据库·人工智能·postgresql
实验室管理云平台2 小时前
北京盛元广通推疾控中心实验室管理系统,提升检测效率
数据库·python
极限实验室2 小时前
INFINI Easysearch 向量搜索实战(一)
数据库·搜索引擎
枫叶丹42 小时前
数据库上 Kubernetes 后,KES-Operator 如何简化集群运维
数据库
蓝速科技2 小时前
数字人一体机芯片选型:RK3576 与 X86 场景化对比指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
IvorySQL3 小时前
AI 时代,PostgreSQL 正在发生什么变化?
数据库·人工智能·postgresql
隔窗听雨眠3 小时前
分析型数据库与事务型数据库:核心差异与选型决策深度解析
数据库
吠品3 小时前
纯HTML+ECharts构建交互式数据看板:实现思路与踩坑记录
java·服务器·数据库