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')
相关推荐
倔强的石头_15 分钟前
《Kingbase护城河》——跨平台环境下的数据库联调实战
数据库
lzhdim17 分钟前
SQL 入门 17:MySQL 数据类型:从字符串到 JSON 的全面解析
数据库·sql·mysql·json
杨云龙UP42 分钟前
Oracle RAC / ODA 生产环境指定 PDB 启动 SOP
linux·运维·数据库·oracle
kingwebo'sZone1 小时前
在Cent上安装Mysql 8.0的遇到的问题和解决办法
数据库·mysql·adb
幽络源小助理1 小时前
最新知识付费系统网站源码 PC+H5双端 附安装教程 – 幽络源源码网
大数据·数据库
xhaxy1 小时前
pgsql下载安装(CentOS7,pgsql14)
postgresql
小白考证进阶中1 小时前
Oracle OCP证书报考&考试全指南
数据库·oracle·oracle ocp·ocp认证·oracle认证·甲骨文认证·oracle ocp题库
Leon-Ning Liu2 小时前
【真实经验分享】 ORA-600 [qesmaGetTblSeg1]
数据库·oracle
与数据交流的路上2 小时前
MySQL 优化 -- 相关
数据库·mysql
Rooting++3 小时前
为什么mysql的表字段的collation会自动变
数据库·mysql