postgreSQL用时间戳排序

时间:2016-07-19 11:30:44

标签: postgresql postgresql-9.4

我有以下SQL语句:

SELECT * FROM schema."table"
  WHERE "TimeStamp"::timestamp >= '2016-03-09 03:00:05'
  ORDER BY "TimeStamp"::date asc
  LIMIT 15

我期望它做什么?按时间顺序递送15行表,其中时间戳与该日期相同且大于该日期。但是postgres以错误的顺序发送行。第一项是在最后一个位置。 SQL Editor with result 所以有人知道为什么结果这么奇怪吗?

2 个答案:

答案 0 :(得分:5)

简单地使用ORDER BY "TimeStamp"(无需投射到目前为止)。

答案 1 :(得分:3)

通过将"TimeStamp"强制转换为date,您会丢弃时间戳的时间部分,因此一天内的所有值都将被视为相等,并以随机顺序返回。意外的是,第一行按您想要的顺序出现。

如果时间部分与排序相关,请不要在date子句中转换为ORDER BY

也许你感到困惑,因为Oracle的DATE类型有一个时间部分,PostgreSQL没有。