0

datetestというテーブルがあります

CREATE TABLE "DATETEST"."DATETEST" 
   ("FNAME" VARCHAR2(20 BYTE), 
"DOB" DATE, 
"STAFFNO" NUMBER NOT NULL ENABLE, 
 CONSTRAINT "DATETEST_PK" PRIMARY KEY ("STAFFNO"));

次のデータで

INSERT INTO "DATETEST"."DATETEST" (FNAME, DOB, STAFFNO) VALUES ('John', TO_DATE('01-   OCT-45', 'DD-MON-RR'), '1')
INSERT INTO "DATETEST"."DATETEST" (FNAME, DOB, STAFFNO) VALUES ('Ann', TO_DATE('01-NOV-60', 'DD-MON-RR'), '2')
INSERT INTO "DATETEST"."DATETEST" (FNAME, DOB, STAFFNO) VALUES ('David', TO_DATE('24-MAR-58', 'DD-MON-RR'), '3')
INSERT INTO "DATETEST"."DATETEST" (FNAME, DOB, STAFFNO) VALUES ('Mary', TO_DATE('19-FEB-70', 'DD-MON-RR'), '4')
INSERT INTO "DATETEST"."DATETEST" (FNAME, DOB, STAFFNO) VALUES ('Susan', TO_DATE('03-JUN-40', 'DD-MON-RR'), '5')
INSERT INTO "DATETEST"."DATETEST" (FNAME, DOB, STAFFNO) VALUES ('Julie', TO_DATE('13-JUN-65', 'DD-MON-RR'), '6')

次のクエリを実行すると

select * from datatest order by dob desc 

次の結果が得られます

FNAME                DOB       STAFFNO
-------------------- --------- -------
John                 01-OCT-45       1 
Susan                03-JUN-40       5 
Mary                 19-FEB-70       4 
Julie                13-JUN-65       6 
Ann                  01-NOV-60       2 
David                24-MAR-58       3 

正しい注文の仕方がわかりません。正しい順序を照会するにはどうすればよいですか?

4

3 に答える 3

5

データは時系列になっています。問題は、変換に「DD-MM-YY」ではなく「DD-MM-RRRR」を使用していることです。

'RRRR'バージョンは、世紀を取得するために特定のルールを使用します。したがって、最初の行は1945-20-01ではなく2045-10-01です。

于 2012-09-11T19:31:22.393 に答える
3

RRは1950未満の日付に対してのみ1900を追加し、1950を超える日付に対しては2000を追加するため、RRの代わりにYYYYを使用して挿入を実行します。

ここに元のドキュメントテキスト

ここに画像の説明を入力してください

出典:Oracle®DatabaseSQL Language Reference 11g Release 2(11.2)E26088-01

SQLフィドルをご覧ください

于 2012-09-11T19:30:18.307 に答える
3

保存されている実際の日付を確認するには、次の形式を使用してください。

SQL> select fname,
  2         to_char(dob,'dd-mon-yyyy') dob,
  3         staffno
  4    from datetest
  5    order by dob desc;

FNAME                DOB            STAFFNO
-------------------- ----------- ----------
David                24-mar-1958          3
Mary                 19-feb-1970          4
Julie                13-jun-1965          6
Susan                03-jun-2040          5
John                 01-oct-2045          1
Ann                  01-nov-1960          2

これは、「問題」を確認するのに役立ちます。Gordonが指摘したように(+1)、これは、実際の日付を計算するときにOracleが「RR」を解釈する方法のためです。

于 2012-09-11T19:32:23.797 に答える