SQL Server中字符串格式日期转换后按最新日期优先排序方法
解决方案
你存储的字符串为RFC 1123标准的带时区日期格式,可直接通过SQL Server内置转换函数处理后排序,具体方案如下:
- 使用
TRY_CONVERT函数将字符串转换为DATETIMEOFFSET类型(可兼容时区偏移字段),转换完成后按该字段倒序即可实现最新日期靠前的效果 - 2012以下版本的SQL Server不支持
TRY_CONVERT,可替换为CONVERT函数,TRY_CONVERT的优势是遇到非法格式字符串时返回NULL,不会导致整个查询报错
示例查询语句
假设表名为your_table,存储日期字符串的字段名为date_str,查询代码如下:
SELECT date_str FROM your_table ORDER BY TRY_CONVERT(DATETIMEOFFSET, date_str, 127) DESC
注意事项
如果表中存在不符合格式的脏数据,
TRY_CONVERT转换后会返回NULL,这部分数据默认会排在排序结果的末尾。如果需要过滤脏数据,可在WHERE子句中添加条件:TRY_CONVERT(DATETIMEOFFSET, date_str, 127) IS NOT NULL
内容的提问来源于stack exchange,提问作者M.Zaky
相关产品推荐
相关产品推荐

