Quelle est la différence entre le masque de date 'yy' et 'rr' d'oracle?


19

Exemple:

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

et

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

retour des résultats différents

33

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

AA vous permet de récupérer seulement deux chiffres d'une année, par exemple, les 99 en 1999. Les autres chiffres (19) sont automatiquement y attribué à l'actuel siècle. RR convertit les années à deux chiffres en années à quatre chiffres en les arrondissant.

50-99 sont stockées en 1950-1999 et les dates se terminant en 00-49 sont stockées sous la forme 2000-2049. RRRR accepte une entrée à quatre chiffres (bien que non obligatoire), et convertit les dates à deux chiffres comme RR. AAAA accepte les entrées à 4 chiffres butdoesn't font une date de conversion

Essentiellement, votre premier exemple supposera que 81 est 2081 alors que celui RR suppose 1981. Ainsi, le premier exemple ne doit pas retourner toutes les lignes que vous le plus probablement pas embauché de gars après le 1er mai 2081 encore :-)


4

compatibilité y2k. rr suppose 01 être 2001, 01 yy suppose être 1901

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

edit: putain! michael "quickfingers" stumbeat me to it!

/mp


5

@Michael Stum

Ma dernière expérience Oracle est un peu longue il y a

Uhm, était, avant 2000? : P

...

aura-t-yy toujours supposer 19xx?

according to your source, nous obtenons les scénarios suivants:

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


-1

RR est synonyme de 1990 et après 90 yy suppose que 2090 .... que nous sommes dans l'année en cours, ...

  0

... 'Non rr' est différent selon que vous êtes [avant la 50e année du siècle] (http://docs.oracle.com/cd/E11882_01/server.112/ e26088/sql_elements004.htm # i116004) ou non. 18 nov.. 122012-11-18 18:10:12


1

RR affiche quatre chiffres comme 1999 ou 2015 (si elle est < 49 alors il considérera 20e siècle)


0

A propos de RR ou RRRR:

Quand nous insérons les dates avec 2 degits ans, soit 09/oct/15
puis oracle peut changer les siècles automatiquement d'où la silution est des dates à 4 chiffres.Mais la version 4 degit est introduite dans certaines versions de retour, donc les solutions pour ce problème dans les versions antérieures était RR ou RRRR, Mais notez que cela ne fonctionne que avec la fonction TO_DATE() mais pas avec la fonction TO_CHAR(). Lorsque des insertions/mises à jour sont effectuées à des dates précises, nous devons toujours clarifier la date courante dans l'horloge en association avec la traduction de la date car Oracle effectue chaque traduction de date en contactant le serveur. Afin de conserver les consistances au cours des siècles, il est toujours préférable d'exécuter la traduction de la date avec 4 années degit.

A propos de AA ou AAAA:

Il accepte les dates, mais ne marche pas a changer la fonctionnalité automatiquement.

This Image shows behaviour when inserting date with two degit no i.e. 09/oct/ 15