sql报错--日期格式图片在转换整个输入字符串之前结束

数据库:oracle

ORM框架:mybatis

  • 错误1: 无法转换为内部表示

数据库存储的日期格式为:

27-12月-18 09.50.57.017000 上午

要转换为“yyyy-MM-dd”的格式:

SELECT to_char(a.create_date,'yyyy-mm-dd') FROM cms_article a; 

以上在数据库执行能正确查询出结果。

to_char()是将日期格式-->字符串,实体类中定义的日期时Date类型,直接这样查询出来赋值的时候代码会报错:

Cause: java.sql.SQLException: Error ; uncategorized SQLException for SQL [];

意思是无法转换为内部表示,原因就是数据库查询的结果类型与实体定义的不符,无法转换。

  • 错误2:日期格式图片在转换整个输入字符串之前结束

转换为日期格式的函数to_date():

SELECT to_date(a.create_date, 'YYYY-MM') AS "createDate" FROM cms_article a;       

报错:

Cause: java.sql.SQLException: ORA-01830: 日期格式图片在转换整个输入字符串之前结束。

to_date()是将字符串-->日期格式,参数1是源字符串,参数2是要转换成的日期形式,to_date限制二者类型、精确度须一致。

(1)类型一致

比如上面的sql,要转换的字段a.create_date类型不是字符串,首先需要转换成字符串,再次转换成日期格式:

select to_date(to_char(a.create_date,'yyyy-mm-dd'),'yyyy-mm-dd') from cms_article a;

(2)精度一致

比如to_date(‘2019-01-07 13:23:44’,’yyyy-mm-dd’)  无法转换。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值