oracle plsql order by Birth of Birth列不起作用

shr*_*aal 0 sql oracle

我有一个名为datetest的表

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

以下数据

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')
Run Code Online (Sandbox Code Playgroud)

当我执行以下查询

select * from datatest order by dob desc 
Run Code Online (Sandbox Code Playgroud)

我得到以下结果

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 
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何获得正确的订单.如何查询正确的订单?

Gor*_*off 5

您的数据按时间顺序排列.问题是您使用'DD-MM-RRRR'而不是'DD-MM-YY'进行转换.

'RRRR'版本使用特定的规则来获得这个世纪.所以,你的第一行是2045-10-01,而不是1945-20-01.