Domanda

Esempio:

select ename from emp where hiredate = todate('01/05/81','dd/mm/yy')

E

select ename from emp where hiredate = todate('01/05/81','dd/mm/rr')

restituire risultati diversi

È stato utile?

Soluzione

http://oracle.ittoolbox.com/groups/technical-functional/oracle-dev-l/difference-between-yyyy-and-rrrr-format-519525

YY ti permette di recuperare solo due cifre di un anno, ad esempio il 99 nel 1999.Le altre cifre (19) vengono assegnate automaticamente al secolo in corso.RR converte gli anni a due cifre in anni a quattro cifre mediante arrotondamento.

50-99 sono conservati come 1950-1999 e le date che terminano nel 00-49 sono conservate come 2000-2049.RRRR accetta un input a quattro cifre (sebbene non richiesto) e converte le date a due cifre come fa RR.Yyyy accetta input a 4 cifre che i mappelli non fanno alcuna conversione della data

In sostanza, il tuo primo esempio presupporrà che 81 sia 2081 mentre quello RR presuppone 1981.Quindi il primo esempio non dovrebbe restituire alcuna riga poiché molto probabilmente non hai ancora assunto nessun ragazzo dopo il 1 maggio 2081 :-)

Altri suggerimenti

@Michele Stum

La mia ultima esperienza con Oracle è avvenuta un po' di tempo fa

uhm, era prima del 2000?:P

...

yy assumerà sempre 19xx?

secondo la tua fonte, otteniamo i seguenti scenari:

USING
ENTERED
STORED
SELECT of date column


YY
22-FEB-01
22-FEB-1901
22-FEB-01


YYYY
22-FEB-01
22-FEB-0001
22-FEB-0001


RR
22-FEB-01
22-FEB-2001
22-FEB-01


RRRR
22-FEB-01
22-FEB-2001
22-FEB-2001 

/mp

compatibilità y2k.rr presuppone che 01 sia 2001, yy presuppone che 01 sia 1901

Vedere: http://www.oradev.com/oracle_date_format.jsp

modificare:Dannazione! Michael "Quickfingers" stupido prima di me!

/mp

RR visualizza quattro cifre come 1999 o 2015 (se è <49 considererà il 20° secolo)

Informazioni su RR o RRRR

Quando inseriamo le date con 2 cifre anni (es.09/OCT/15) quindi Oracle può cambiare automaticamente i secoli, quindi la soluzione è di 4 date di cifre.Ma la versione a 4 cifre viene introdotta in alcune versioni recenti, quindi le soluzioni per questo problema nelle versioni precedenti erano RR O RRRR.Ma nota che funziona solo con il TO_DATE() funzione ma non con il TO_CHAR() funzione.

Ogni volta che vengono effettuati inserimenti/aggiornamenti sulle date, dovremmo sempre chiarire la data corrente in esecuzione nell'orologio in associazione con la traduzione della data poiché Oracle esegue ogni traduzione della data contattando il server.

Per mantenere la coerenza tra i secoli è sempre meglio eseguire la traduzione della data con anni a 4 cifre.

Informazioni su YY o YYYY

Accetta le date ma non ha la funzionalità per cambiarle automaticamente.

Questa immagine mostra il comportamento quando si inserisce la data con due cifre (ad es.09/ott/15)

RR sta per "dopo il 1990" e yy assume 90 come 2090.... poiché siamo nell'anno corrente,...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top