Kijkend naar de lijn:
OD.DATE2 BETWEEN '08/03/2015' AND '08/03/2016'
Dan '08/03/2015'
en '08/03/2016'
zijn letterlijke tekenreeksen en zijn geen datums.
Oracle zal een impliciete conversie proberen van een letterlijke tekenreeks naar een datum met behulp van uw NLS_DATE_FORMAT
sessieparameter als het formaatmasker en als dit niet werkt, wordt er een fout gegenereerd.
De eenvoudige oplossing is om geen letterlijke tekenreeksen te gebruiken, maar in plaats daarvan letterlijke datums:
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
Maar u kunt ook het formaatmasker specificeren:
OD.DATE2 BETWEEN TO_DATE( '08/03/2015', 'DD/MM/YYYY' ) AND TO_DATE( '08/03/2016', 'DD/MM/YYYY' )