SQL 服务器 -Order BY

SQL Server -Order BY

我在 table 中有一个字段是 varchar(12),但是该字段中的数据是一个日期 - 1/1/2016(我有大约 5,000 个日期)。我一直在尝试执行 ORDER BY,但它似乎没有按日期订购。如果它不是 DateTIME 字段,我将如何在该字段上执行 ORDER BY?

尝试:

Order by cast(Field as datetime)

使用 CAST() 转换诸如“1/1/2016”之类的日期取决于本地化设置。

假设值是 MM/DD/YYYY 格式(一些国家确实使用 DD/MM/YYYY),那么这样写更安全:

order by convert(datetime, field, 101)

然后,如果字段与此格式不完全匹配,您 运行 将面临转换失败的风险。为防止此错误,SQL Server 2012+ 提供 try_convert().

所以,我认为最好的方法是:

order by try_convert(datetime, field, 101)