Quelle est la différence entre oracle " aa " et " rr " date de masque?

StackOverflow https://stackoverflow.com/questions/19058

  •  09-06-2019
  •  | 
  •  

Question

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')

de retour des résultats différents

Était-ce utile?

La solution

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

YY vous permet de récupérer simplement deux chiffres d'une année, par exemple, les 99 autres dans 1999.Les autres chiffres (19) sont automatiquement assigné à l' siècle.RR convertit des années à deux chiffres dans les années à quatre chiffres par arrondissement.

50-99 sont stockés en tant que 1950 à 1999, et les dates de fin de 00-49 sont stockés en tant que 2000-2049.RRRR accepte un à quatre chiffres d'entrée (bien que non requis), et convertit les dates à deux chiffres que RR n'.AAAA accepte de 4 chiffres entrées butdoesn pas n'importe quelle date de la conversion

Essentiellement, votre premier exemple suppose que 81 est 2081 alors que le RR on suppose 1981.Donc le premier exemple ne doit pas renvoyer toutes les lignes que vous n'avez probablement pas embaucher un gars après le 1er Mai 2081 encore :-)

Autres conseils

@Michael Stum

Mon dernier Oracle de l'expérience est un peu long ago

euh, c'était, avant l'an 2000?:p

...

Va yy toujours supposer 19xx?

en fonction de votre 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

y2k compatibilité.rr suppose 01 à 2001, yy suppose 01 à 1901

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

edit:putain! michael "quickfingers" stum me battre pour elle!

/mp

RR affiche quatre chiffres de l'année 1999 ou 2015(si c'est <49 ensuite, il examinera 20e siècle)

À propos de RR ou RRRR

Lorsque nous sommes en insérant les dates avec 2 chiffres des années (c'est à dire09-oct-15) ensuite, Oracle peut modifier les siècles automatiquement d'où l' la solution est de 4 chiffres.Mais à 4 chiffres de la version est introduit dans les versions les plus récentes, donc les solutions pour ce problème dans les versions antérieures a été RR ou RRRR.Mais notez que cela ne fonctionne que avec l' TO_DATE() la fonction, mais pas avec l' TO_CHAR() fonction.

Chaque fois que les insertions, mises à jour sont effectuées sur les dates que nous devrions toujours préciser date en cours d'exécution dans l'horloge en association avec la date de la traduction depuis Oracle effectue chaque jour de la traduction en communiquant avec le serveur.

Afin de tenir compte de la cohérence entre les siècles, il est toujours préférable d'exécuter la date de la traduction avec 4 chiffres.

Sur AA ou AAAA

Il accepte les dates, mais n'a pas la fonctionnalité automatiquement modifié.

Cette Image montre le comportement lors de l'insertion de la date à deux chiffres (c'est à dire09-oct-15)

RR représente après 1990 et yy suppose 90 comme 2090....comme nous sommes dans le courant an,...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top