2016-07-19 19 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)infoを気にしません。キャスティングなしで注文を試す – Houari

答えて

2

単純にORDER BY "TimeStamp"(現在までキャスティングなし)を使用してください。

2

"TimeStamp"dateにキャストすると、タイムスタンプの時間部分が捨てられるため、1日以内のすべての値は等しいとみなされ、ランダムな順序で返されます。あなたが望む順番で最初の行が表示されるのは偶然です。

時間部分がソートに関連する場合は、ORDER BY節のdateにキャストしないでください。

おそらく、OracleのDATEタイプにはPostgreSQLにはない時間部分があるので、あなたは混乱しているかもしれません。

関連する問題