以下是我的源表的元数据:
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
复制相似问题