数字格式模型无效

时间:2016-08-19 07:15:36

标签: sql oracle

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;

每当我执行此语句时,它都会显示无效的数字格式模型。

1 个答案:

答案 0 :(得分:0)

您的查询目前无效,因为to_char需要numberdate,但普通数字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;