2012-09-20 60 views
0

我有這樣的(按年,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,15,30,或45

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

哇,真的很容易解決:)謝謝很多,它適用於我。 – Coyolero

1

您可以在您的SELECT列表中使用DATEPART(mi, CONVERT(DATETIME, hour))並對其進行排序。

+1

我強烈建議您將datepart拼寫爲'minute'而不是使用簡寫。速記只會導致混亂。此外,轉換並不是真的必要的 - 如果字符串不能隱式轉換爲日期時間,它將失敗,有或沒有它。 –

+0

對@AaronBertrand,不知道這個。謝謝(mi和mm之間經常發生混淆)。 – Vikdor

+0

...和m和n ... –

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)