今天算自己加班时间的时候,报了个这个错误:
错误语句段:
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://www.toymoban.com/news/detail-529142.html
当然要注意时分秒对应的数值范围要在合理的区间内文章来源地址https://www.toymoban.com/news/detail-529142.html
到了这里,关于ORA-01810:格式代码出现两次的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!