例:
select ename from emp where hiredate = todate('01/05/81','dd/mm/yy')
と
select ename from emp where hiredate = todate('01/05/81','dd/mm/rr')
異なる結果を返す
YY を使用すると、1999 年の 99 のように、年の 2 桁だけを取得できます。残りの数字 (19) は、現在の世紀に自動的に割り当てられます。RR は、丸めによって 2 桁の年を 4 桁の年に変換します。
50 ~ 99 は 1950 ~ 1999 として保存され、00 ~ 49 で終わる日付は 2000 ~ 2049 として保存されます。RRRR は 4 桁の入力を受け入れ (必須ではありません)、RR と同様に 2 桁の日付を変換します。YYYY は 4 桁の入力を受け入れますが、日付の変換は行いません
基本的に、最初の例では 81 が 2081 であると想定されますが、RR では 1981 と想定されます。したがって、2081 年 5 月 1 日以降はまだ人を雇っていない可能性が高いため、最初の例では行が返されません :-)
私の最後のオラクル経験は少し前です
ええと、2000年より前でしたか?:p
...
yy は常に 19xx を想定しますか?
ソースによると、次のシナリオが得られます。
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 互換性。rr は 01 を 2001 と想定し、yy は 01 を 1901 と想定します。
参照: http://www.oradev.com/oracle_date_format.jsp
編集:いまいましい!michael "quickfingers" stum は私を打ちのめしました!
/mp
RR は 1999 年または 2015 年として 4 桁を表示します (49 未満の場合は 20 世紀と見なされます)。
RR は 1990 年以降を表し、yy は 90 を 2090 と仮定します....現在の年なので...