简体   繁体   中英

Oracle sql order by not working as expected?

I have a table called 'ADDRESSES'.

My query:

select MODIFIED_DATE, CITY from ADDRESSES order by MODIFIED_DATE desc, CITY asc;

By running the above query I get:

MODIFIED_DATE   CITY
=============   ==============
13-JAN-16       CHICAGO
13-JAN-16       CHICAGO
13-JAN-16       CHICAGO
13-JAN-16       KANSAS CITY
13-JAN-16       KANSAS CITY
13-JAN-16       KANSAS CITY
13-JAN-16       KANSAS CITY
13-JAN-16       KANSAS CITY
13-JAN-16       CHICAGO
13-JAN-16       CHICAGO
13-JAN-16       DENVER
13-JAN-16       DENVER

But I expect:

MODIFIED_DATE   CITY
=============   ==============
13-JAN-16       CHICAGO
13-JAN-16       CHICAGO
13-JAN-16       CHICAGO
13-JAN-16       CHICAGO
13-JAN-16       CHICAGO
13-JAN-16       DENVER
13-JAN-16       DENVER
13-JAN-16       KANSAS CITY
13-JAN-16       KANSAS CITY
13-JAN-16       KANSAS CITY
13-JAN-16       KANSAS CITY
13-JAN-16       KANSAS CITY

The data type of MODIFIED_DATE is DATE and the data type of CITY is VARCHAR2.

Why is this happening?

Oracle Date contains more information than displayed : hour, minutes and second. If you are only interested in the date part you should use trunc()

order by trunc(MODIFIED_DATE) desc, CITY asc

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM