sql >> Database >  >> RDS >> Oracle

RR versus YY in Oracle

Bij het formatteren van datums in Oracle Database hebben we de mogelijkheid om RR . te gebruiken en YY om een ​​jaartal van twee cijfers terug te geven.

Deze twee formaatelementen zijn vergelijkbaar. Het verschil zit 'm in de manier waarop ze jaren van twee cijfers interpreteren.

We hebben ook de mogelijkheid om RRRR . te gebruiken en YYYY bij het teruggeven van viercijferige jaren.

Voorbeeld

Hier is een voorbeeld dat de RR . vergelijkt en YY formaat elementen:

SELECT 
    TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-RR'), 'YYYY') AS "RR",
    TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-YY'), 'YYYY') AS "YY"
FROM DUAL;

Resultaat:

     RR      YY 
_______ _______ 
1981    2081   

We kunnen zien dat RR interpreteert het jaar 81 als 1981, terwijl YY interpreteert het als 2081.

  • Bij gebruik van YY , heeft het geretourneerde jaar altijd dezelfde eerste 2 cijfers als het huidige jaar.
  • Met RR , varieert de eeuw van de geretourneerde waarde afhankelijk van het opgegeven jaar van twee cijfers en de laatste twee cijfers van het huidige jaar.

Zo legt de Oracle-documentatie het uit:

  • Als het opgegeven jaartal van twee cijfers 00 tot 49 is, dan
    • Als de laatste twee cijfers van het huidige jaar 00 tot 49 zijn, heeft het geretourneerde jaar dezelfde eerste twee cijfers als het huidige jaar.
    • Als de laatste twee cijfers van het huidige jaar 50 tot 99 zijn, zijn de eerste 2 cijfers van het geretourneerde jaar 1 groter dan de eerste 2 cijfers van het huidige jaar.
  • Als het opgegeven jaartal van twee cijfers 50 tot 99 is, dan
    • Als de laatste twee cijfers van het huidige jaar 00 tot 49 zijn, dan zijn de eerste 2 cijfers van het geretourneerde jaar 1 minder dan de eerste 2 cijfers van het huidige jaar.
    • Als de laatste twee cijfers van het huidige jaar 50 tot 99 zijn, heeft het geretourneerde jaar dezelfde eerste twee cijfers als het huidige jaar.

De RRRR en YYYY Opmaakelementen

Hier is een voorbeeld dat de RRRR . vergelijkt en YYYY formaat elementen:

SELECT 
    TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-RRRR'), 'YYYY') AS "RRRR",
    TO_CHAR(TO_DATE('20-Dec-81', 'DD-Mon-YYYY'), 'YYYY') AS "YYYY"
FROM DUAL;

Resultaat:

   RRRR    YYYY 
_______ _______ 
1981    0081   

In dit geval RRRR geeft hetzelfde jaar terug dat RR deed, maar YYYY geeft het jaar 0081 terug.

De bovenstaande voorbeelden gaan ervan uit dat u weet hoe TO_CHAR() en TO_DATE() het werk. Zie Oracle TO_CHAR(datetime) Functie en Oracle TO_DATE() Functie in Oracle voor meer info.


  1. 2 functies om het jaar uit een datum in Oracle te halen

  2. python voegt E toe aan string

  3. Een berekend veld maken in Access

  4. Hoe om te gaan met fouten in in SQL Server geneste transacties