to_date() neemt uw stringparameter, stemt deze af op het formaat dat u opgeeft in de tweede parameter, en construeert er een datumveld van. Het datumveld gebruikt niet het formaat dat u in de tweede parameter hebt opgegeven - in feite wordt het opgeslagen met een interne gegevensrepresentatie die helemaal geen formaat heeft (een getal, naar alle waarschijnlijkheid).
Om een opmaak weer te geven in de resultaten van een datumveld, kunt u:
- Laat de client die de query uitvoert de NLS-parameters instellen (op sessieniveau) om een gelokaliseerd formaat te bieden, met een
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';
verklaring), of - Gebruik
to_char(..., 'YYYY-MM-DD')
rond uw bestaande veld om de datum weer om te zetten in een tekenreeks die is opgemaakt zoals u hem wilt hebben. Waar vervangt u...
met uw huidige kolomdefinitie in de selectie.
Benadering # 1 is al aan de gang, omdat er al een NLS_DATE_FORMAT-set is die het huidige formaat produceert, maar het is met een formaat dat je niet wilt, dus als je het kunt controleren en het daar kunt wijzigen, kun je dat doen manier. Als je dat niet kunt en je moet het formaat op een andere manier consistent hebben, dan zou #2 de juiste keuze kunnen zijn.