阅读 230

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') &gt;= 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') &lt;= 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


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐