Při formátování dat v databázi Oracle máme možnost použít RR
a YY
vrátit dvouciferný rok.
Tyto dva prvky formátu jsou podobné. Rozdíl je v tom, jak interpretují dvě číslice roku.
Máme také možnost použít RRRR
a YYYY
při vracení čtyřmístných let.
Příklad
Zde je příklad, který porovnává RR
a YY
prvky formátu:
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;
Výsledek:
RR YY _______ _______ 1981 2081
Vidíme, že RR
interpretuje rok 81 jako 1981, zatímco YY
interpretuje to jako 2081.
- Při použití
YY
, vrácený rok má vždy stejné první 2 číslice jako aktuální rok. - S
RR
, století návratové hodnoty se liší podle zadaného dvoumístného roku a posledních dvou číslic aktuálního roku.
Zde je návod, jak to vysvětluje dokumentace Oracle:
- Pokud je zadaný dvoumístný rok 00 až 49, pak
- Pokud jsou poslední dvě číslice aktuálního roku 00 až 49, pak má vrácený rok stejné první dvě číslice jako aktuální rok.
- Pokud jsou poslední dvě číslice aktuálního roku 50 až 99, pak jsou první 2 číslice vráceného roku o 1 větší než první 2 číslice aktuálního roku.
- Pokud je zadaný dvoumístný rok 50 až 99, pak
- Pokud jsou poslední dvě číslice aktuálního roku 00 až 49, pak jsou první 2 číslice vráceného roku o 1 menší než první 2 číslice aktuálního roku.
- Pokud jsou poslední dvě číslice aktuálního roku 50 až 99, pak má vrácený rok stejné první dvě číslice jako aktuální rok.
RRRR
a YYYY
Formátovat prvky
Zde je příklad, který porovnává RRRR
a YYYY
prvky formátu:
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;
Výsledek:
RRRR YYYY _______ _______ 1981 0081
V tomto případě RRRR
vrátí stejný rok jako RR
ano, ale YYYY
vrátí rok 0081.
Výše uvedené příklady předpokládají, že víte, jak TO_CHAR()
a TO_DATE()
práce. Viz Oracle TO_CHAR(datetime)
Funkce a Oracle TO_DATE()
Pro více informací použijte funkci Oracle.