【发布时间】:2018-07-08 07:26:43
【问题描述】:
我有一个从 Excel 导入 SQL Server 2012 的表,该表拒绝作为日期字段导入。它以 VarChar 的形式出现,看起来像“03/15/2017”。所以我所做的是在表格中创建一个新的日期字段,现在我只想用文本的日期版本填充该字段。
我写了这个小更新代码来做到这一点:
update [dbo].[Sheet5$]
set TDate = CAST(SUBSTRING([Date], 7, 4) + '/' + SUBSTRING([Date], 1, 2) + '/'
+ SUBSTRING([Date], 4, 2) AS DATETIME)
它给了我一个错误:
将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。
谁能告诉我我做错了什么,以及如何解决它,以便我可以将这些日期输入日期字段?
【问题讨论】:
-
-
可能是区域设置不同,也可能是该列中有无效日期的值。您可以使用
TRY_CONVERT-SELECT [Date] FROM [dbo].[Sheet5$] WHERE TRY_CONVERT(DATE, [Date], 101) IS NULL识别有问题的行 - 在这里您不会收到错误输入的错误,使用CONVERT而不是CAST您可以指定样式(在本例中为 101),以便转换函数知道期望格式为MM/dd/yyyy的日期
标签: sql-server date type-conversion