SELECT decode(to_number(to_char(01-04-2016, 'mm')),
1,
to_number(to_char(01-04-2016, 'yyyy')) - 1,
2,
to_number(to_char(01-04-2016, 'yyyy')) - 1,
3,
to_number(to_char(01-04-2016, 'yyyy')) - 1,
to_number(to_char(01-04-2016, 'yyyy'))) FROM DUAL;
每当我执行此语句时,它都会显示无效的数字格式模型。
答案 0 :(得分:0)
您的查询目前无效,因为to_char需要number
或date
,但普通数字01-04-2016
不代表其中任何一个。
您的评论to_char(01042016,'mm')
中提到的后续工作也不会发挥作用,因为无法使用mm
解析给定的数字,因为它确实需要有效的numberFormat
而非dateFormat
1}},mm
不是。
为了使您的查询有效,请将纯日期包装到to_date
并提及dateFormat
给出的当前char
:
SELECT decode(to_number(to_char(to_date('01-04-2016', 'dd-mm-yyyy'), 'mm')),
1,
to_number(to_char(to_date('01-04-2016', 'dd-mm-yyyy'), 'yyyy')) - 1,
2,
to_number(to_char(to_date('01-04-2016', 'dd-mm-yyyy'), 'yyyy')) - 1,
3,
to_number(to_char(to_date('01-04-2016', 'dd-mm-yyyy'), 'yyyy')) - 1,
to_number(to_char(to_date('01-04-2016', 'dd-mm-yyyy'), 'yyyy')))
FROM DUAL;