在SQL Server 2008日期时间varchar
问题描述:
我试图从文件名捕获日期部分,并试图将其转换为datetime数据类型。在SQL Server 2008日期时间varchar
SELECT CONVERT(Datetime, substring('EmployeeExcel_03312013',15,22), 120)
获得以下错误:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
任何想法?请建议我是否缺少任何东西?
答
有一个类似的帖子就在这里:Convert varchar into datetime in SQL Server
为了使它更简单:
select convert(datetime, '03312013', 120) --produces error
这表明CONVERT不知道做什么用的字符串格式化的方式。
如果你把日期分成'03 -31-2013'(这是上面的链接)或类似的东西,你会很好。
答
您可以使用以下方法:
SELECT
convert(datetime,
right('EmployeeExcel_03312013', 4)
+substring('EmployeeExcel_03312013',15,4), 112)
这将被转换为日期之前获得的格式20130331
值。
见
答
你可以给这个一去
DECLARE @Date char(8)
set @Date=substring('EmployeeExcel_03312013',15,22)
SELECT CONVERT(datetime,RIGHT(@Date,4)+LEFT(@Date,2)+SUBSTRING(@Date,3,2))
输出:
-----------------------
2013-03-31 00:00:00.000
(1 row(s) affected)