2016-07-19 155 views
1

我有以下SQL語句排序:PostgreSQL的時間戳

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 所以有誰有一個想法,爲什麼結果這是奇怪的?

+0

如果您可以將其寫爲答案,我可以將其標記爲正確的,併爲您提供+1。 – Garamaru

+0

因爲您將字段'Timestamp'輸入'date' data_type,它不關心'time'(hh:mm:ss)信息。嘗試訂單,而不是鑄造 – Houari

回答

2

使用簡單的ORDER BY "TimeStamp"(沒有鑄造迄今)。

2

通過鑄造"TimeStamp"date您丟棄時間戳的時間部分,因此一天內的所有值都將被視爲相等並以隨機順序返回。意外的是,第一行以您想要的順序出現。

如果時間部分與排序相關,請勿在ORDER BY子句中投射到date

也許你感到困惑,因爲Oracle的DATE類型有時間部分,PostgreSQL沒有。