2025年ORA-01810:格式代码出现两次

ORA-01810:格式代码出现两次今天算自己加班时间的时候 报了个这个错误 错误语句段 select to number to date 2022 11 01 19 30 00 yyyy MM dd HH mm ss to date 2022 11 01 17 30 00 yyyy MM dd

大家好,我是讯享网,很高兴认识大家。

今天算自己加班时间的时候,报了个这个错误:

错误语句段:

select to_number(to_date('2022-11-01 19:30:00','yyyy-MM-dd HH:mm:ss')-to_date('2022-11-01 17:30:00','yyyy-MM-dd HH24:mm:ss'))*24+ to_number(to_date('2022-11-03 21:50:36','yyyy-MM-dd HH:mm:ss')-to_date('2022-11-03 17:30:00','yyyy-MM-dd HH24:mm:ss'))*24+ to_number(to_date('2022-11-04 17:34:15','yyyy-MM-dd HH:mm:ss')-to_date('2022-11-04 17:00:00','yyyy-MM-dd HH24:mm:ss'))*24+ to_number(to_date('2022-11-08 20:00:00','yyyy-MM-dd HH:mm:ss')-to_date('2022-11-08 17:30:00','yyyy-MM-dd HH24:mm:ss'))*24+ to_number(to_date('2022-11-10 20:32:27','yyyy-MM-dd HH:mm:ss')-to_date('2022-11-10 17:30:00','yyyy-MM-dd HH24:mm:ss'))*24+ to_number(to_date('2022-11-14 19:44:00','yyyy-MM-dd HH:mm:ss')-to_date('2022-11-14 17:30:00','yyyy-MM-dd HH24:mm:ss'))*24+ to_number(to_date('2022-11-15 19:41:00','yyyy-MM-dd HH:mm:ss')-to_date('2022-11-15 17:30:00','yyyy-MM-dd HH24:mm:ss'))*24 加班时间 from dual
讯享网

正确语句段:

讯享网select to_number(to_date('2022-11-01 19:30:00','yyyy-MM-dd HH24:mi:ss')-to_date('2022-11-01 17:30:00','yyyy-MM-dd HH24:mi:ss'))*24+ to_number(to_date('2022-11-03 21:50:36','yyyy-MM-dd HH24:mi:ss')-to_date('2022-11-03 17:30:00','yyyy-MM-dd HH24:mi:ss'))*24+ to_number(to_date('2022-11-04 17:34:15','yyyy-MM-dd HH24:mi:ss')-to_date('2022-11-04 17:00:00','yyyy-MM-dd HH24:mi:ss'))*24+ to_number(to_date('2022-11-08 20:00:00','yyyy-MM-dd HH24:mi:ss')-to_date('2022-11-08 17:30:00','yyyy-MM-dd HH24:mi:ss'))*24+ to_number(to_date('2022-11-10 20:32:27','yyyy-MM-dd HH24:mi:ss')-to_date('2022-11-10 17:30:00','yyyy-MM-dd HH24:mi:ss'))*24+ to_number(to_date('2022-11-14 19:44:00','yyyy-MM-dd HH24:mi:ss')-to_date('2022-11-14 17:30:00','yyyy-MM-dd HH24:mi:ss'))*24+ to_number(to_date('2022-11-15 19:41:00','yyyy-MM-dd HH24:mi:ss')-to_date('2022-11-15 17:30:00','yyyy-MM-dd HH24:mi:ss'))*24 加班时间 from dual

分析如下:

        1:ORA-01810: 格式代码出现两次,这个错误提示明显的指出是格式化字符串重复了两次,在Oracle中不应该将某个格式重复两次,否则Oracle就不知道要从哪个占位区间去解析该字段,即使写成AND V.UPLOAD_DATE <=TO_DATE ('2013-11-11 23:59:59', 'YYYY-MM-DD HH:mm:SS')也是不灵的,因为SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用mi来代替分钟。 
        2:当修改为AND V.UPLOAD_DATE <=TO_DATE ('2013-11-11 23:59:59', 'YYYY-MM-DD HH:MI:SS')时又会报ORA-01849: 小时值必须介于 1 和 12 之间,由此可见HH只支持小时数在1-12之间的,要以24小时的形式显示出来时要将HH修改为HH24

        当然要注意时分秒对应的数值范围要在合理的区间内

小讯
上一篇 2025-02-19 23:41
下一篇 2025-03-15 10:10

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/12169.html