记录 to_char引发的ORA-01722: 无效数字 问题

最近遇到一个日期查询问题,不考虑时间,只查询某一天的数据,所以需要使用时间格式‘YYYY-MM-DD’来进行格式转化

1.tochar使用方式

select to_char(sysdate,'YYYY-MM-DD') from dual

在这里插入图片描述
这种方式有利于查询当天的数据,非常方便

select * from TBALENAME(自己的表名) where tochar(date(字段名),'YYYY-MM-DD') = tochar(sysdate,'YYYY-MM-DD')

2.tochar遇到的问题

当我想查询其他日期时,写了这么一个sql语句

select * from TBALENAME(自己的表名) where tochar(date(字段名),'YYYY-MM-DD') = tochar('2021-11-03','YYYY-MM-DD')
哦豁,报错

在这里插入图片描述
在这里,聪明的孩子应该已经看到错误了,但是呢,我不是聪明的孩子。o(╥﹏╥)o
有人会问了,为什么to_date来查,因为有的数据日期格式带有时间,不方便查询某一天的数据。
3.找错误
我从网上看了有关 to_char的相关资料
在这里插入图片描述
附上链接:https://blog.csdn.net/qichangjian/article/details/88391761
没错,将日期转换为字符类型,而我传的却是字符串,所以就会报错
4.解决
①使用to_date将‘2021-11-03’先转换为日期类型,再使用to_char转为字符类型

select to_char(to_date('2021-11-04','YYYY-MM-DD'),'YYYY-MM-DD') from dual

在这里插入图片描述
②一般来讲,后端关于时间的属性都定义为日期类型,比如Timestamp,所以就算你测试时传入字符串也会自动转换为时间类型,所以也可以直接使用to_char进行直接转化,但是传入字符串的格式必须带有时间,比如:‘2021-11-04 00:00:00’
附上一段查询代码供参考

 TO_CHAR(PLAN_DATE,'YYYY-MM-DD') =  TO_CHAR(#{condDto.searchDate},'YYYY-MM-DD')
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮小澜孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值