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.