sql 时间参数 对比
起因
项目需要,查询返回创建日期区间的数据
前端传值 2021-06-08
后台接收 Date类型
经过
1 xml中判断为空 startDate!= null and startDate!= '' 会报错 因为 !='' 是String类型的判断,而接受时间参数用的Date类型, 删掉startDate!= ''判断即可
2 因为是取区间的数据,类似于 created_date>= 2021-06-08 或者 created_date<= 2021-06-08,当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序错误。
原符号 | < | <= | > | >= | & | ' | " |
---|---|---|---|---|---|---|---|
替换符号 | < | <= | > | >= | & | ' | " |
两个区间数据相同时取不到数据 即 created_date >= 2021-06-08 and created_date <= 2021-06-08
仔细检查发现是因为格式化的问题数据库中的created_date数据存的是yyyy-mm-dd hh-MM-ss 格式的
所以传进来的 2021-06-08 会被默认为是 2021-06-08 00:00:00的,所以要改变格式:
3.1 方法一 : 从xml中修改
<if test="startDate != null"> and to_date(to_char(created_date,'yyyy-mm-dd'),'yyyy-mm-dd') >= to_date(to_char(#{startDate},'yyyy-mm-dd'),'yyyy-mm-dd') </if> <if test="endDate != null"> and to_date(to_char(created_date,'yyyy-mm-dd'),'yyyy-mm-dd') <= to_date(to_char(#{endDate},'yyyy-mm-dd'),'yyyy-mm-dd') </if>复制代码
3.2 方法二: 自己后台设置格式为自己项目需要的类型 如 yyyy-mm-dd 或 yyyy-mm-dd hh-MM-ss
作者:小木猫
链接:https://juejin.cn/post/7023298220113526815