2011-01-12 66 views
3

当按时间戳排序时,我注意到了一些奇怪的排序顺序。首先按照时间戳的时间部分进行排序,然后对于同一时间的记录排序时间进行排序。Oracle中的时间戳排序顺序

对我来说这看起来完全错误。有什么方法可以告诉Oracle按日期排序,然后按时间排序?

谢谢。

字段被定义为TIMESTAMP(6),没有时区。 下面是分类结果:

10-JAN-11 11.18.36.368000000 AM 
09-JAN-11 11.18.33.700000000 AM 
08-JAN-11 11.18.33.704000000 AM 
07-JAN-11 11.18.33.700000000 AM 
06-JAN-11 11.17.40.705000000 AM 
05-JAN-11 11.17.42.611000000 AM 
04-JAN-11 11.17.40.723000000 AM 
02-JAN-11 04.45.09.553000000 PM 
01-JAN-11 04.45.08.447000000 PM 
31-DEC-10 04.45.08.447000000 PM 
30-DEC-10 04.35.22.153000000 PM 
29-DEC-10 04.30.25.334000000 PM 
12-JAN-11 12.00.00.000000000 AM 
11-JAN-11 12.00.00.000000000 AM 
10-JAN-11 12.00.00.000000000 AM 
09-JAN-11 12.00.00.000000000 AM 
08-JAN-11 12.00.00.000000000 AM 
07-JAN-11 12.00.00.000000000 AM 

下面是该查询:

select period_end from table_name where entity_id=102167 order by period_end desc; 

回答

8

迪马,

你的时间戳格式显示,除了一个时间戳的所有组件,:世纪。您的最后六行必须来自上个世纪。

Regards,
Rob。

0

你可能有一个timestamp with timezone

+0

不,它被定义为TIMESTAMP(6),没有时区。 – Dima 2011-01-12 12:02:29

+0

在这种情况下,它可能有助于显示SQL语句。 – 2011-01-12 12:05:01