下面是我的源表的元數據:描述:「從字符串轉換日期和/或時間時轉換失敗。」
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
以下是我在OLE DB Source Editor
在:
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
。
必須指出的是,Date varchar(100)
從Hours_StageTbl
(源表)被插入到Date datetime
在Hours
(目標表),是什麼給我的問題,我相信。
不管我做什麼來嘗試解決我得到以下錯誤的轉換:
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.".
我花了幾個小時試圖糾正這一點。額外的一雙眼睛會很棒。
顯示在'F.R_Date'和'F.Date' – 2014-12-19 01:22:05
數據這很可能意味着以下表達式:'轉換(日期,F.R_Date + '28',111)'失敗,因爲該字段中的數據與所需格式不匹配(111爲「YYYY/MM/DD」)。然而,這可能是由於一些事情。解決問題的第一步是運行查詢的選擇性部分,直到找出問題。例如,打開SSMS並運行:'SELECT convert(date,R_Date + '28',111)FROM Hours_StageTbl'你仍然得到錯誤嗎?如果是,請檢查該字段中的數據並查找與格式不匹配的數據。 – 2014-12-19 01:27:20
現在我仔細看看,您在描述中指定了'R_Date'字段。無論如何,仔細查看您的數據並找出哪些數據與格式不匹配。 – 2014-12-19 01:29:02