2016-01-26 56 views
-1

我有一個複雜的日期列,我需要在SQL Server中排序2008SQL服務器排序日期隨着時間/分鐘]

我的查詢:

SELECT 
    DivisionName AS Division, StoreNum AS Store, 
    LeadName AS Lead, Type, ChangeType, Changes, 
    UpdatedBy, 
    CONVERT(VARCHAR(10), UpdatedDate, 101) + RIGHT(CONVERT(VARCHAR(32), UpdatedDate, 100), 8) AS UpdatedDate 
FROM 
    m 
WHERE 
    DivID != 0 
ORDER BY 
    CONVERT(VARCHAR(10), UpdatedDate, 101) + RIGHT(CONVERT(VARCHAR(32), UpdatedDate, 100), 8) ASC 

在數據庫中的格式:smalldatetime 2016- 01-25 16:50:00

和顯示器值,我用:

CONVERT(VARCHAR(10), UpdatedDate, 101) + RIGHT(CONVERT(VARCHAR(32), UpdatedDate, 100), 8) AS UpdatedDate 

我是起訴:(小時/分鐘排序),我需要頂部7:40 PM排。

enter image description here

不同的順序通過嘗試:

1:排序UpdatedDate

enter image description here

2:通過轉換訂單(VARCHAR(10),UpdatedDate,101 )desc,right(convert(varchar(32),UpdatedDate,100),8)asc

enter image description here

+2

您的問題沒有意義。下午7點40分顯然在上午11:29之後。如果你想讓它們從晚到早排序,可以在'ORDER BY'中使用'DESC'。 –

+3

不需要將它們轉換爲字符串來訂購它們。只需'ORDER BY UPDATEdDate'。 –

+0

@SamAxe返回相同的結果。 –

回答

1

的問題是你的日期時間轉換成的Varchar在排序部分also..try下方查詢您的輸出

SELECT DivisionName as Division, StoreNum as Store, LeadName as Lead, Type, ChangeType,Changes, 
UpdatedBy, 
convert(varchar(10),UpdatedDate, 101) + right(convert(varchar(32), UpdatedDate,100),8) as UpdatedDate FROM m 
WHERE DivID!=0 
ORDER by UPDATEdDate desc 

這裏只提到datetime列,因此會將訂單子句中按日期和時間的順序對行排序。

Sql Fiddle

+0

我會給你答案,因爲你真的嘗試過,而不是隻輸入一些dickhead評論。我遇到這個問題的真正原因是我轉換爲varchar並使用與列名相同的別名,所以當我嘗試按列排序時,它試圖按varchar排序而不是smalldatetime。 –

+0

@Hanoncs是的..所以它會做排序charachter..just使用datetime的列名將解決問題..現在它的罰款現在..我upvoted你的問題 – Sachu