我有一个复杂的日期列,我需要在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排。
尝试的顺序不同:
1:按更新日期排序
2:按转换顺序(varchar(10),UpdatedDate,101)desc,right(convert(varchar(32),UpdatedDate,100),8)asc
答案 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顺序对行进行排序。