我正在尝试从文件名中捕获 datepart 并尝试将其转换为 datetime 数据类型。
SELECT CONVERT(Datetime, substring('EmployeeExcel_03312013',15,22), 120)
出现以下错误:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
有任何想法吗?请建议我是否遗漏了什么?
我正在尝试从文件名中捕获 datepart 并尝试将其转换为 datetime 数据类型。
SELECT CONVERT(Datetime, substring('EmployeeExcel_03312013',15,22), 120)
出现以下错误:
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
有任何想法吗?请建议我是否遗漏了什么?
您可以使用以下内容:
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)
这里有一个类似的帖子:Convert varchar into datetime in SQL Server
为了使它更简单:
select convert(datetime, '03312013', 120) --produces error
这表明 CONVERT 不知道如何处理以这种方式格式化的字符串。
如果您将日期拆分为看起来更像“03-31-2013”(这是上面的链接所指示的)或类似的东西,那么您会很好。