我有以下SQL语句:
SELECT * FROM schema."table"
WHERE "TimeStamp"::timestamp >= '2016-03-09 03:00:05'
ORDER BY "TimeStamp"::date asc
LIMIT 15
我期望它做什么?按时间顺序递送15行表,其中时间戳与该日期相同且大于该日期。但是postgres以错误的顺序发送行。第一项是在最后一个位置。 所以有人知道为什么结果这么奇怪吗?
答案 0 :(得分:5)
简单地使用ORDER BY "TimeStamp"
(无需投射到目前为止)。
答案 1 :(得分:3)
通过将"TimeStamp"
强制转换为date
,您会丢弃时间戳的时间部分,因此一天内的所有值都将被视为相等,并以随机顺序返回。意外的是,第一行按您想要的顺序出现。
如果时间部分与排序相关,请不要在date
子句中转换为ORDER BY
。
也许你感到困惑,因为Oracle的DATE
类型有一个时间部分,PostgreSQL没有。