mxm*_*ile 3 sql-server order-by t-sql
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
Run Code Online (Sandbox Code Playgroud)
如何对数据进行排序,以便 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
Run Code Online (Sandbox Code Playgroud)
愚蠢的业务规则,我知道我知道......基本上如果“用户”没有指定时间,时间无关紧要(所以它排在列表的底部)。
首先按日期排序,然后将时间戳不是午夜的值优先于它所在的值。
ORDER BY CONVERT(DATE, col),
CASE WHEN CONVERT(DATE,col) = col
THEN 2 ELSE 1 END,
CONVERT(TIME, col);
Run Code Online (Sandbox Code Playgroud)
其它的办法:
ORDER BY
CASE WHEN CONVERT(DATE, col) = col
THEN DATEADD(day, 1, col)
ELSE col
END ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7981 次 |
最近记录: |