sql >> Databáze >  >> RDS >> Oracle

RR vs YY v Oracle

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.


  1. 9 osvědčených postupů pro psaní SQL dotazů

  2. Zřetězení řetězců v MySQL

  3. Jak mohu simulovat proměnnou pole v MySQL?

  4. Jak změnit výchozí port MySQL/MariaDB v Linuxu