按同一列中的四分之一小时排序

时间:2012-09-20 17:27:13

标签: sql sql-server

我有这样的结果(按年份,DayOfYear,小时排序):

Year    DayOfYear   Hour
2012    266         13:00
2012    266         13:15
2012    266         13:30
2012    266         15:15
2012    266         15:30
2012    266         16:00

我需要按四分之一小时来检索行顺序,然后按小时来检索行

Year    DayOfYear   Hour
2012    266         13:00
2012    266         16:00
2012    266         13:15
2012    266         15:15
2012    266         13:30
2012    266         15:30

3 个答案:

答案 0 :(得分:3)

基本上你可以按分钟订购,因为这将是0,15,30或45。

ORDER BY Year, DayOfYear, DATEPART(MINUTE, Hour), Hour;

答案 1 :(得分:1)

您可以在SELECT列表中使用DATEPART(mi, CONVERT(DATETIME, hour))并对其进行排序。

答案 2 :(得分:0)

您可以使用以下内容转换为15分钟的间隔:

datediff(minute, 0, Hour) / 15 % 4

或在查询中:

select  *
,       datediff(minute, 0, Hour) / 15 % 4 as Quarter
from    YourTable
order by
        datediff(minute, 0, Hour) / 15 % 4

打印:

Year        DayOfYear   Hour             Quarter
----------- ----------- ---------------- -----------
2012        266         13:00:00         0
2012        266         16:00:00         0
2012        266         13:15:00         1
2012        266         15:15:00         1
2012        266         15:30:00         2
2012        266         13:30:00         2

(6 row(s) affected)