今天做项目的时候,编写plsql脚本时遇到一个日期转换的问题,如果在plsql调试时,脚本可以正常执行,但是程序调用时,就会报错 ORA-01830: 日期格式图片在转换整个输入字符串之前结束

to_date函数

to_date函数用于字符串转日期,与to_char函数刚好相反。to_date形如

--oracle 为了区分分钟和月份,月份以mi表示
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截取参数的年月日部分。

    --plsql 定义变量this_date
    --start_date为varchar2类型
    select to_date(start_date,'yyyy-mm-dd')
    into this_date
    from dual

以上脚本start_date长度为10(即形式为年-月-日),则可以成功执行,如果精确到时分秒甚至更长,则无法转换为’yyyy-mm-dd’的形式,报出如题错误,解决办法如下

    --截取start_date年月日部分使用
    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数据库支持的 日期 格式 ,并且确保输入的 日期 字符串是正确的,不包含无法识别的字符。