行を見てください:
OD.DATE2 BETWEEN '08/03/2015' AND '08/03/2016'
次に、'08/03/2015'
および'08/03/2016'
文字列リテラルであり、日付ではありません。
Oracleは、NLS_DATE_FORMAT
を使用して、文字列リテラルから日付への暗黙的な変換を試みます。 フォーマットマスクとしてのセッションパラメータ。これが機能しない場合は、エラーがスローされます。
簡単な解決策は、文字列リテラルを使用するのではなく、代わりに日付リテラルを使用することです。
SELECT 'M'||to_char( DATE2, 'MM' ) PERIODE,
count(*) DATA,
DCCPT
FROM BDD
WHERE BDD = 'phone'
AND SENS = 'Ent'
AND DCCPT IN ( 'PIOLUC' )
AND DATE2 BETWEEN DATE '2015-03-08' AND DATE '2016-03-08'
GROUP BY
'M'||to_char( DATE2, 'MM' ),
DCCPT
ただし、フォーマットマスクを指定することもできます:
OD.DATE2 BETWEEN TO_DATE( '08/03/2015', 'DD/MM/YYYY' ) AND TO_DATE( '08/03/2016', 'DD/MM/YYYY' )