我正在使用一个日期为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
感谢任何帮助。
答案 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)