oracle 报“无效数字”异常和“ORA-01830: 日期格式图片在转换整个输入字符串之前结束”
1.问题1
执行下列SQL:
sql = "select count(1) as totle from vhl_model_data a where a.OBTAIN_CREATE_TIME between to_date(?,'yyyymmsshh24mi') and to_date(?,'yyyymmsshh24mi');";
Oracle报“无效数字异常”;经过两个钟头的反复的检查,发现是由于自己粗心在上述语句结尾多写了个分号“;”导致。粗心害死人啊!真是囧!
2.问题2
ORA-01830: 日期格式图片在转换整个输入字符串之前结束”异常
原因:在创建表的时候,将本该达date类型的字段写成了varchar2类型,而在hibernate的mapping配置文件中将此字段的类型设为了“java.util.Date”,这样在保存的时候hibernate会把毫秒数也添加到数据库中,而oracle中date类型不支持毫秒数,所以在使用to_date()函数将字符串转换为时间类型时会报错。
解决办法就是把表中此字段的类型改为date类型或者使用to_timestamp()函数,用法与to_date()函数一样,时间格式为:'yyyy-mm-ss hh24:mi:ss:ff'