sql >> Databasteknik >  >> RDS >> Oracle

RR vs YY i Oracle

När vi formaterar datum i Oracle Database har vi möjlighet att använda RR och YY för att returnera ett tvåsiffrigt årtal.

Dessa två formatelement liknar varandra. Skillnaden ligger i hur de tolkar tvåsiffriga årtal.

Vi har också möjlighet att använda RRRR och YYYY när du returnerar fyrsiffriga årtal.

Exempel

Här är ett exempel som jämför RR och YY formatelement:

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;

Resultat:

     RR      YY 
_______ _______ 
1981    2081   

Vi kan se att RR tolkar år 81 som 1981, medan YY tolkar det som 2081.

  • När du använder YY , har det returnerade året alltid samma första två siffror som det aktuella året.
  • Med RR , århundradet för returvärdet varierar beroende på det angivna tvåsiffriga året och de två sista siffrorna i det aktuella året.

Så här förklarar Oracle-dokumentationen det:

  • Om det angivna tvåsiffriga året är 00 till 49, då
    • Om de två sista siffrorna i innevarande år är 00 till 49, har det returnerade året samma första två siffror som innevarande år.
    • Om de två sista siffrorna i det aktuella året är 50 till 99, är de två första siffrorna i det returnerade året 1 större än de två första siffrorna i det aktuella året.
  • Om det angivna tvåsiffriga året är 50 till 99,
    • Om de två sista siffrorna i det aktuella året är 00 till 49, är de två första siffrorna i det returnerade året 1 mindre än de två första siffrorna i det aktuella året.
    • Om de två sista siffrorna i innevarande år är 50 till 99, har det returnerade året samma första två siffror som innevarande år.

RRRR och YYYY Formatera element

Här är ett exempel som jämför RRRR och YYYY formatelement:

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;

Resultat:

   RRRR    YYYY 
_______ _______ 
1981    0081   

I det här fallet, RRRR returnerar samma år som RR gjorde, men YYYY returnerar år 0081.

Exemplen ovan förutsätter att du vet hur TO_CHAR() och TO_DATE() arbete. Se Oracle TO_CHAR(datetime) Funktion och Oracle TO_DATE() Funktion i Oracle för mer information.


  1. T-SQL:Hur använder man parametrar i dynamisk SQL?

  2. Tabell som ett argument för en PostgreSQL-funktion

  3. Fulltextsökning sedan PostgreSQL 8.3

  4. Är det möjligt att migrera från Realm till SQLite?