将varchar dd-mmm-yyyy转换为dd / mm / yyyy然后通过不工作顺序?

时间:2015-04-01 15:46:22

标签: sql-server tsql date

我有一个情况

  1. 我需要将varchar值从dd-mmm-yyyy转换为dd/mm/yyyy

  2. 按上述转换日期排序

  3. 使用

    CONVERT(VARCHAR(10), CAST([Date] AS DATETIME), 103) as ModifiedDate
    

    我得到了所需的格式,但是当我按ModifiedDate

    订购时

    按结果显示2013年,2014年,2015年混合比赛的顺序。我认为它按日期排序。我在哪里做错了?有人可以帮忙吗?谢谢

2 个答案:

答案 0 :(得分:6)

由于ModifiedDate是一个varchar,它的排序是词汇(01/01/1900< 01/01/1901< 02/01/1900}。

解决方案不是使用varchar进行排序。将您的varchar-date转换为实际日期(即只有CAST([Date] AS DATETIME)而没有外部CONVERT)并按此表达式排序。

答案 1 :(得分:-1)

select CONVERT(VARCHAR(10),cast ([Date] AS DATETIME),103) as ModifiedDate
from <table name> order by CONVERT(VARCHAR(10),cast ([Date] AS DATETIME),103)