SQL 服务器:将 StartDATE 20140804 Nvarchar 转换为 Datetime2

SQL Server: convert StartDATE 20140804 Nvarchar to Datetime2

我正在使用 SQL Server 2008,并且我从一个平面文件导入。我无法正确导入 datetime 列,所以我暂时将其指定为 nvarchar(50)

现在我想把它转换成datetime2格式。但是,这样做时,出现错误

Conversion failed when converting date and/or time from character string.

我的 nvarchar(50) 列中当前的数据如下所示:

20140804

我需要将其转换为:

2014-08-04 00:00:00.0000000.

请注意,我不仅要转换一个日期,还要转换 table 中的所有 StartDATE 值并将它们插入另一个 table

感谢任何帮助。

Insert into targettab(datecol,<othercols....>)
select cast(datefield as datetime2),<othercols...> from sourcetab

您可以使用cast函数

SELECT convert(varchar, StartDATE , 113) from ur table

您需要先转换为 char,因为转换为 int 会将这些日期添加到 1900-01-01

select CONVERT (datetime,convert(char(8),rnwl_efctv_dt ))

这里有一些例子

select CONVERT (datetime,5)
1900-01-06 00:00:00.000

select CONVERT (datetime,20100101)

爆炸,因为您无法将 20100101 天添加到 1900-01-01..您超出了限制

先转换为字符

declare @i int
select @i = 20100101
select CONVERT (datetime,convert(char(8),@i))