I have a table called datetest
CREATE TABLE "DATETEST"."DATETEST"
("FNAME" VARCHAR2(20 BYTE),
"DOB" DATE,
"STAFFNO" NUMBER NOT NULL ENABLE,
CONSTRAINT "DATETEST_PK" PRIMARY KEY ("STAFFNO"));
with the following data
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')
when i do execute the following query
select * from datatest order by dob desc
i get the following result
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
I cannot figure out how to get the correct order. How do I query the correct order?
Your data is in chronological order. The problem is that you are using ‘DD-MM-RRRR’ instead of ‘DD-MM-YY’ for the conversion.
The ‘RRRR’ version uses particular rules to get the century. So, your first row is 2045-10-01, not 1945-20-01.