28

例:

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

異なる結果を返す

4

6 に答える 6

46

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

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 日以降はまだ人を雇っていない可能性が高いため、最初の例では行が返されません :-)

于 2008-08-20T23:11:32.710 に答える
5

@マイケル・スタム

私の最後のオラクル経験は少し前です

ええと、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

于 2008-08-21T01:46:07.970 に答える
5

y2k 互換性。rr は 01 を 2001 と想定し、yy は 01 を 1901 と想定します。

参照: http://www.oradev.com/oracle_date_format.jsp

編集:いまいましい!michael "quickfingers" stum は私を打ちのめしました!

/mp

于 2008-08-20T23:12:36.763 に答える
1

RR は 1999 年または 2015 年として 4 桁を表示します (49 未満の場合は 20 世紀と見なされます)。

于 2011-04-21T05:54:05.750 に答える
-1

RR は 1990 年以降を表し、yy は 90 を 2090 と仮定します....現在の年なので...

于 2009-06-25T07:00:23.817 に答える