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

GK1*_*960 1 t-sql sql-server date

我有一个情况

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

  2. 按上述转换日期排序

运用

CONVERT(VARCHAR(10), CAST([Date] AS DATETIME), 103) as ModifiedDate
Run Code Online (Sandbox Code Playgroud)

我得到了所需的格式,但是当我订购时 ModifiedDate

按结果集显示2013年,2014年,2015年混合匹配.我认为它按日期排序.我在哪里做错了?有人可以帮忙吗?谢谢

Hei*_*nzi 6

由于ModifiedDate是一个varchar,其顺序是词法(01/01/1900< 01/01/1901< 02/01/1900).

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