Was ist der Unterschied zwischen Orakels 'yy' und 'rr' Datumsmaske?


19

Beispiel:

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

und

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

Rückkehr unterschiedliche Ergebnisse

33

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

YY Sie nur zwei Ziffern eines Jahres zum Beispiel die 99, abrufen können in 1999. Die anderen Ziffern (19) sind automatisch y dem aktuellen Jahrhundert zugeordnet. RR wandelt zweistellige Jahre durch Runden in vierstellige Jahre um.

50-99 werden als 1950-1999 gespeichert und Daten, die auf 00-49 enden, werden als 2000-2049 gespeichert. RRRR akzeptiert eine vierstellige Eingabe (obwohl nicht erforderlich) und konvertiert zweistellige Daten wie RR. YYYY akzeptiert 4-stellige Eingänge butdoesn't ein beliebiges Datum tun Umwandlung

Im Wesentlichen Ihr erstes Beispiel davon aus, dass 81 2081 ist, während der RR ein 1981 übernimmt also das erste Beispiel sollten keine Zeilen zurück, wie Sie am meisten Wahrscheinlich haben wir nach dem 1. Mai 2081 noch keine Leute eingestellt :-)


4

y2k Kompatibilität. rr übernimmt 01 2001 zu sein, yy 01 übernimmt 1901

siehe sein: http://www.oradev.com/oracle_date_format.jsp

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

/mp


5

@Michael Stum

Meine letzte Oracle Erfahrung lange ein bisschen vor ist

ähm, war es, vor dem Jahr 2000? : P

...

Wird yy immer 19xx übernehmen?

according to your source, erhalten wir die folgenden Szenarien:

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 steht für nach 1990 und yy 90 als 2090 davon ausgegangen, .... wie wir im laufenden Jahr sind, ...

  0

Nope ... 'rr' ist unterschiedlich, je nachdem, ob Sie [vor dem 50. Jahr des Jahrhunderts] (http://docs.oracle.com/cd/E11882_01/server.112/ e26088/sql_elements004.htm # i116004) oder nicht. 18 nov. 122012-11-18 18:10:12


1

RR zeigt vier Ziffern wie 1999 oder 2015 (wenn es < ist 49, dann wird es die 20. Jahrhundert betrachtet)


0

über RR oder RRRR:

Wenn wir die Termine mit 2 degits Jahren einfügen dh 09/oct/15
dann Orakel kann die Jahrhunderte automatisch ändert daher die Silution ist 4-stellige Datumsangaben.Aber 4-Grad-Version wird in einige rescent Versionen eingeführt, bevor die Lösungen für dieses Problem in früheren Versionen war RR oder RRRR, Beachten Sie jedoch, dass es nur funktioniert mit der Funktion TO_DATE(), aber nicht mit der Funktion TO_CHAR().

Wann immer Einfügungen/Aktualisierungen an Daten durchgeführt werden, sollten wir immer das aktuelle Datum in der Uhr in Verbindung mit der Datumsübersetzung klären, da Oracle jede Datumsübersetzung durch Kontaktaufnahme mit dem Server durchführt.

Um die Widersprüche zwischen den Jahrhunderten zu halten, ist es immer besser, die Datumsübersetzung mit 4 Grad zu berechnen.

Über YY oder YYYY:

Er akzeptiert die Daten aber doesnt hat Funktionalität automatisch zu ändern.

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