您正在尝试按整数排序,然后是smalldatetime。
结果应如下所示
Name | int | SmallDateTime
bob | 0 | 29/06/2014
bob | 0 | 28/06/2014
Ste | 0 | 30/05/2014
mike | 1 | 29/05/2014
但是我得到了
Name | int | SmallDateTime
Ste | 0 | 30/05/2014
bob | 0 | 29/06/2014
bob | 0 | 28/06/2014
mike | 1 | 29/05/2014
所以它按整数正确排序,但随后它按日而不是日期对小日期时间进行排序。
我正在使用的代码在
之下@SortBy varchar(50)
as
begin
set nocount on;
begin
Select Name
,integer
,SmallDateTime
From Table
Where Name != Null
CASE WHEN @SortBy = 'Available' Then LetAgreed END ASC, CreatedDate desc
end
任何帮助都会很棒
答案 0 :(得分:1)
我认为这是因为您将日期存储在SQL中plain text
或(varchar / char)
,这就是为什么SQL Server会认为30
比29
更新(在降序中)。
您需要做的是,将代码的最后一部分更改为:
ORDER BY
CONVERT(DateTime, CreatedDate,101)