![](/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.