Sql-Server
按日期時間排序,最後 00:00:00
order by datetimecolumn
訂購這樣的datetime
列:datetimecolumn 2014-09-04 00:00:00 2014-09-04 00:00:00 2014-09-04 01:00:00 2014-09-05 00:00:00 2014-09-05 01:00:00 2014-09-05 02:00:00
如何對數據進行排序,使 00:00:00 的值排在最後,但仍按時間升序排列值,如下所示:
datetimecolumn 2014-09-04 01:00:00 2014-09-04 00:00:00 2014-09-04 00:00:00 2014-09-05 01:00:00 2014-09-05 02:00:00 2014-09-05 00:00:00
愚蠢的商業規則,我知道我知道……基本上如果“使用者”沒有指定時間,時間並不重要(所以它排在列表的底部)。
首先僅按日期排序,然後將時間戳不是午夜的值優先於那些時間戳。
ORDER BY CONVERT(DATE, col), CASE WHEN CONVERT(DATE,col) = col THEN 2 ELSE 1 END, CONVERT(TIME, col);
另一種方式:
ORDER BY CASE WHEN CONVERT(DATE, col) = col THEN DATEADD(day, 1, col) ELSE col END ;