今天做项目的时候,编写plsql脚本时遇到一个日期转换的问题,如果在plsql调试时,脚本可以正常执行,但是程序调用时,就会报错
ORA-01830: 日期格式图片在转换整个输入字符串之前结束
to_date函数
to_date函数用于字符串转日期,与to_char函数刚好相反。to_date形如
to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')
to_date('2004-05-07','yyyy-mm-dd')
参数1是源字符串,参数2是要转换成的日期形式。但是to_date限制两者精确度须一致,比如to_date(‘2004-05-07 13:23:44’,’yyyy-mm-dd’)这个就无法转换。
我手工执行时传入的是’yyyy-mm-dd’这种形式的,而程序调用时传入值精确到秒,就报错了,解决办法就是用substr截取参数的年月日部分。
select to_date(start_date,'yyyy-mm-dd')
into this_date
from dual
以上脚本start_date长度为10(即形式为年-月-日),则可以成功执行,如果精确到时分秒甚至更长,则无法转换为’yyyy-mm-dd’的形式,报出如题错误,解决办法如下
select to_date(substr(start_date,1,10),'yyyy-mm-dd')
into this_date
from dual
今天查询数据库,在比较
日期
时出现
错
误:
ORA
-
01830
:
日期
格式
图片
在
转换
整个
输入字符串
之前
结束
错
误原因:
date类型不能包含秒以后的精度。
解决办法:
截取
日期
字符串
数据库中的
日期
格式
:s_atime = "2019-08-29 16:32:32.707"
to_date(s_atime ,'yyyy-mm-dd')
传入的是’yyyy-mm-dd’这种形式的,而程序调用时传入值精确到秒,就报
错
了,解决办法就是用substr截取参数的年月日部分。
改为:to_date(substr(s_at
plsql
编写脚本时遇到一个
日期
转换
的问题,如果在
plsql
调试时,脚本可以正常执行,但是程序调用时,就会报
错
ORA
-
01830
:
日期
格式
在
转换
整个
输入字符串
之前
结束
to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') --
ora
cle 为了区分分钟和月份,月份以mi表示
to_date('2004-05-07','yyyy-mm-dd')
to_date限制两者精确度须一致,比如to_date(‘2004-05-07 13:23:44’,’y
select “TO_DATE”(‘2016/08/11 00:00:00’, ‘yyyy/mm/dd’) from dual
报
错
ORA
-
01830
: date format picture ends before converting entire input string
错
误产生原因:date类型不能包含秒以后的精度。
如
日期
:2012-06-20 21:01:24
在使用to_dat...
ORA
-
01830
: date format picture ends before converting entire input string的几种原因
ora
cle数据库的
日期
类型与比较异常产生总结
ora
cle数据库的
日期
类型与比较
在数据库中我们可以用Date类型来存储时间,有时为了方便也会用varchar2类型来存储时间信息。我们在对
日期
进行比较的时候可能会因为
格式
的问题而产生异常。
ORA
-
01830
是
Ora
cle数据库中的一个
错
误代码,它表示在
转换
日期
类型数据时出现了
错
误。具体地说,
错
误信息“
日期
格式
图片
在
转换
整个
输入字符串
之前
结束
”意味着
Ora
cle数据库无法解析
日期
格式
的数据,因为输入的
日期
格式
不符合预期,导致
日期
格式
的解析提前终止。
这种
错
误通常是由于输入的
日期
字符串
格式
不正确导致的。例如,
日期
格式
不符合预期、
日期
字符串包含无法识别的字符等等。为了解决这个问题,需要检查输入的
日期
字符串是否符合
Ora
cle数据库支持的
日期
格式
,并且确保输入的
日期
字符串是正确的,不包含无法识别的字符。