SQL Server排序日期,以小时/分钟为单位

时间:2016-01-26 04:00:37

标签: sql sql-server

我有一个复杂的日期列,我需要在SQL Server 2008中进行排序

我的查询:

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排。

enter image description here

尝试的顺序不同:

1:按更新日期排序

enter image description here

2:按转换顺序(varchar(10),UpdatedDate,101)desc,right(convert(varchar(32),UpdatedDate,100),8)asc

enter image description here

1 个答案:

答案 0 :(得分:1)

问题是你是在排序部分将日期时间转换为Varchar还是在输出的查询下面

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

这里的order子句只提到了datetime列,所以它会按照日期和时间的desc顺序对行进行排序。

Sql Fiddle