今天算自己加班时间的时候,报了个这个错误:
错误语句段:
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
当然要注意时分秒对应的数值范围要在合理的区间内
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/12169.html