2016-08-19 14 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'は' date'か 'number'を期待しています。この値は – SomeJavaGuy

+0

を表していませんが、すでにto_char(01042016、 'mm')を指定していますが、同じエラーが表示されています –

+0

@NirmalyaRoykarmakarええ、あなたは日付形式で数値を解析しようとしているので、仕事。 – SomeJavaGuy

答えて

0

to_charnumberまたはdateと予期していますが、平易な数字01-04-2016はこれらのいずれも表していません。

それが有効numberFormatなくdateFormatmm isn'tを期待していないとして与えられた番号はmmで解析することcan'tとして、to_char(01042016,'mm')文句を言わない作業のいずれかあなたのコメントで述べたフォローアップ。あなたのクエリがcharによって与えられた電流dateFormatを、仕事to_dateに純粋な日付をラップして言及するために

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

ありがとうございます。 –

関連する問題