转换和排序varchar日期dd-MMM-yyyy

时间:2015-06-18 02:06:02

标签: sql-server date sql-server-2012

我正在使用一个日期为varchar的表。示例dateformat: 17君2015 我尝试了以下方法将日期(dd-MMM-yyyy)转换并排序为dateTime。

SELECT date, name, author
FROM sometable
ORDER BY CONVERT(DATETIME, date, 106) DESC

我也尝试在select语句中转换日期。不起作用。错误是

  

从字符串转换日期和/或时间时转换失败。

转换类型通过一些类似的问题但我没有找到任何解决方案我的格式。有没有办法在日月和年之间选择分隔符?

我还浏览了此链接,其中包含datetime格式的格式。 106离我的varchar日期最近。只有我在表格中的日期在日月和年之间有' - '。

https://msdn.microsoft.com/en-us/library/ms187928.aspx

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

使用106转换日期格式应该绝对没问题。

但我猜你的表中包含一些无效值会导致错误,请尝试通过TRY_CONVERT找出它们:

SELECT date, name, author, TRY_CONVERT(datetime, date, 106) AS convertresult
FROM sometable
WHERE TRY_CONVERT(datetime, date, 106) IS NULL AND date IS NOT NULL

答案 1 :(得分:0)

我会使用日期样式113转换为日期时间格式,如下所示:

DECLARE @date VARCHAR(20) = '17-Jun-2015';

SELECT CONVERT(VARCHAR(20),CAST(@date AS DATETIME),113)