以下是我的源表的元数据:
Hours_StageTbl
type varchar(100)
Op varchar(100)
SN varchar(100)
Hours float
R_Date varchar(100)
Source int
BeginDate date
Age float
下面是我的目标表的元数据:
Hours
HoursId PK, uniqueidentifier
SN varchar(100)
Type varchar(100)
Source int
Date datetime
Op varchar(100)
Age float
Hours float
BornOnDate datetime
下面是我JOIN
到的表的元数据:
A_Age
Type varchar(50)
SN varchar(50)
Op varchar(50)
Reg varchar(50)
RDateAge decimal
Date date
以下是我在SSIS
中的OLE DB Source Editor
中的SQL Command Text
SELECT
F.Type
,F.Op
,F.SN
,F.Hours
,convert(date, F.R_Date +'28', 111) AS 'R_Date'
,F.Source
,F.BeginDate
,F.Age
,A.Type
,A.SN
,A.Op AS 'A_Op'
,A.Reg
,A.RDateAge
,A.Date
,(DATEDIFF(dd, convert(date, F.R_Date +'28', 111), GETDATE())/365.00) + A.RDateAge as 'AdjustedAge'
FROM
Hours_StageTbl F
INNER JOIN
A_Age A
ON
F.SN = A.SN
ORDER BY
F.SN
,F.Date
我的OLE DB Source Editor
流向Data Conversion
,然后再次将Date
从Source
表转换为DT_Date
,然后再流向OLE DB Command
。
必须注意的是,来自Hours_StageTbl
(源表)的Date varchar(100)
将被插入到Hours
(目标表)中的Date datetime
中,我相信这就是给我带来问题的原因。
无论我做什么来修复转换,我都会得到以下错误:
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E07 Description: "Conversion failed when converting date and/or time from character string.".
我花了几个小时试图纠正这个问题。多一双眼睛就太好了。
发布于 2014-12-23 20:59:33
转换时出现问题(日期,F.R_Date +'28',111)。
不要直接用字符串添加天数。使用funcion (例如DateAdd(dd,4,R_Date ))
例如:
Convert(date,DateAdd(dd,28,F.R_Date ),111)
https://stackoverflow.com/questions/27558126
复制相似问题