![](/img/trans.png)
[英]SQL Server 2005 DB2 Linked Server Error When Inserting Result Set into a Temp Table
[英]Converting nvarchar to Date in SQL Server fails when inserting result set into staging table
我已经为此工作了几天,试图了解为什么我的插入失败。 我有一个表,每个记录中都有几个日期。 数据最初插入所有NVARCHAR的“着陆”表中。 在我的合并Upsert语句中,我正在将这些NVARCHARS转换为Date,并且产生了我所期望的格式,并且格式正确。 尝试将这些转换后的日期插入到暂存表中时,该结果集失败,该暂存表中日期字段的数据类型为DATES。
着陆台
CREATE TABLE [land].[MARA] (
[MATNR] nvarchar(18) NULL,
[ERSDA] nvarchar(12) NULL,
[LAEDA] nvarchar(12) NULL
ON [PRIMARY]
WITH (DATA_COMPRESSION = NONE);
GO
ALTER TABLE [land].[MARA] SET (LOCK_ESCALATION = TABLE);
GO
这就是登陆中存储数据的方式
matnr ersda laeda
841058 01.12.1998 23.06.2016
841630 01.12.1998 23.06.2016
842058 01.12.1998 01.06.2016
842085 08.12.1998 23.06.2016
842086 01.12.1998 23.06.2016
登台表
CREATE TABLE [stage].[MARA] (
[MATNR] nvarchar(18) NULL,
[ERSDA] date NULL,
[LAEDA] date NULL
ON [PRIMARY]
WITH (DATA_COMPRESSION = NONE);
GO
ALTER TABLE [stage].[MARA] SET (LOCK_ESCALATION = TABLE);
GO
选择声明
SELECT MATNR
,REPLACE(CONVERT(NVARCHAR, ERSDA,101), '.', '/') AS ERSDA
,REPLACE(CONVERT(NVARCHAR, LAEDA,101), '.', '/') AS LAEDA
FROM IBSCM01.land.MARA
执行上述SQL Select会产生格式化日期的结果集
MATNR ERSDA LAEDA
841058 01/12/1998 23/06/2016
841630 01/12/1998 23/06/2016
842058 01/12/1998 01/06/2016
842085 08/12/1998 23/06/2016
添加Insert子句会产生转换错误
INSERT INTO stage.mara
SELECT MATNR
,REPLACE(CONVERT(NVARCHAR, ERSDA,101), '.', '/') AS ERSDA
,REPLACE(CONVERT(NVARCHAR, LAEDA,101), '.', '/') AS LAEDA
FROM IBSCM01.land.MARA
Conversion failed when converting date and/or time from character string.
在试图转换为日期的地方执行此选择也会引发相同的错误。
SELECT MATNR
,REPLACE(CONVERT(DATE, ERSDA,101), '.', '/') AS ERSDA
,REPLACE(CONVERT(DATE, LAEDA,101), '.', '/') AS LAEDA
FROM IBSCM01.land.MARA
我需要将NVARCHAR日期字段转换为插入到阶段表中的DATES,并且它们是正确的日期。 非常感谢任何见解。 拍
您应该使用105
格式进行 convert
,因为dateformat是dd.mm.yyyy
。
SELECT MATNR
,CONVERT(DATE, ERSDA,105) AS ERSDA
,CONVERT(DATE, LAEDA,105) AS LAEDA
FROM IBSCM01.land.MARA
上面查询的结果可以直接插入到登台表中,因为ERSDA和LAEDA的数据类型为DATE
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.