按整数排序,然后在SQL中按smalldatetime排序

时间:2014-07-28 14:58:51

标签: mysql sql sql-server sorting

您正在尝试按整数排序,然后是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

任何帮助都会很棒

1 个答案:

答案 0 :(得分:1)

我认为这是因为您将日期存储在SQL中plain text(varchar / char),这就是为什么SQL Server会认为3029更新(在降序中)。

您需要做的是,将代码的最后一部分更改为:

ORDER BY 
CONVERT(DateTime, CreatedDate,101)