2016-08-19 1703 views
0
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

'01-04-2016' isn't有效數字。 'to_char'要麼需要'日期'或'號碼'。並且這個值並不代表 – SomeJavaGuy

+0

,但已經給了to_char(01042016,'mm'),但同樣的錯誤顯示 –

+0

@NirmalyaRoykarmakar是的,因爲你試圖用日期格式解析一個數字,工作。 – SomeJavaGuy

回答

0

您的查詢是無效的當前,作爲to_char需要一個numberdate,但普通號01-04-2016 doesn't代表任一。

的跟進您的評論中提到to_char(01042016,'mm')不會工作要麼,作爲給定數量不容有mm被解析爲它想到一個有效numberFormat而不是dateFormat,這mm isn't。

爲了讓您的查詢工作,包純日期爲to_date並註明由char鑑於目前dateFormat

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; 
+0

非常感謝你的工作。 –