Oracle
 sql >> Database >  >> RDS >> Oracle

RR vs YY in Oracle

Durante la formattazione delle date in Oracle Database, abbiamo la possibilità di utilizzare RR e YY per restituire un anno a due cifre.

Questi due elementi di formato sono simili. La differenza sta nel modo in cui interpretano gli anni a due cifre.

Abbiamo anche la possibilità di utilizzare RRRR e YYYY quando si restituiscono anni a quattro cifre.

Esempio

Ecco un esempio che confronta il RR e YY elementi di formato:

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;

Risultato:

     RR      YY 
_______ _______ 
1981    2081   

Possiamo vedere che RR interpreta l'anno 81 come 1981, mentre YY lo interpreta come 2081.

  • Quando si utilizza YY , l'anno restituito ha sempre le stesse prime 2 cifre dell'anno corrente.
  • Con RR , il secolo del valore restituito varia in base all'anno a due cifre specificato e alle ultime due cifre dell'anno corrente.

Ecco come lo spiega la documentazione Oracle:

  • Se l'anno a due cifre specificato è compreso tra 00 e 49, allora
    • Se le ultime due cifre dell'anno in corso sono comprese tra 00 e 49, l'anno restituito ha le stesse prime due cifre dell'anno in corso.
    • Se le ultime due cifre dell'anno in corso sono comprese tra 50 e 99, le prime 2 cifre dell'anno restituito sono 1 maggiore delle prime 2 cifre dell'anno in corso.
  • Se l'anno a due cifre specificato è compreso tra 50 e 99, allora
    • Se le ultime due cifre dell'anno in corso sono comprese tra 00 e 49, le prime 2 cifre dell'anno restituito sono 1 in meno rispetto alle prime 2 cifre dell'anno in corso.
    • Se le ultime due cifre dell'anno in corso sono comprese tra 50 e 99, l'anno restituito ha le stesse prime due cifre dell'anno in corso.

Il RRRR e YYYY Formatta elementi

Ecco un esempio che confronta il RRRR e YYYY elementi di formato:

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;

Risultato:

   RRRR    YYYY 
_______ _______ 
1981    0081   

In questo caso, RRRR restituisce lo stesso anno in cui RR fatto, ma YYYY restituisce l'anno 0081.

Gli esempi precedenti presuppongono che tu sappia come TO_CHAR() e TO_DATE() lavoro. Vedi Oracle TO_CHAR(datetime) Funzione e Oracle TO_DATE() Funzione in Oracle per maggiori informazioni.