我試圖將日期和月份與年份連接,我需要檢查每條記錄以查找財務年。當我執行查詢時,它顯示(varchar數據類型轉換爲日期時間數據類型導致超出範圍的值)錯誤。請幫我找到問題。將varchar數據類型轉換爲日期時間數據類型導致超出範圍的值異常
代碼
set @SiteFileVal1='04-01'
set @SiteFileVal2='03-31'
set @SiteFileYear='2013'
SELECT bb.Amount
FROM Budget bb
JOIN Invoice i ON i.AccountId=bb.AccountId
WHERE bb.AccountId=i.AccountId
AND bb.Year=
(SELECT CASE WHEN (i.Date >= convert(datetime,@SiteFileVal1+'-'+convert(varchar(200),DATEPART(yyyy,i.Date)))
AND i.Date < convert(datetime,@SiteFileVal2+'-'+convert(varchar(200), DATEADD(yyyy,1,DATEPART(yyyy,i.Date))))) THEN year(@SiteFileYear) ELSE DATEADD(yyyy,-1,DATEPART(yyyy,i.Date)) END)
當然,我不知道所涉及的表的模式,但我懷疑這個查詢,即使在一年計算正確後,可能會返回多個重複項。此外,你沒有返回'AccountId' - 你現在怎樣才能把'Amount'和'AccountId'關聯起來?如果你詳細闡述了你想要做什麼,加入問題數據樣本和所用表格的模式,我們可能會提出一個更好的解決方案。 –