【发布时间】:2014-06-02 13:56:27
【问题描述】:
我试图将日期和月份与年份连接起来,我需要检查每条记录以找到财政年度。当我执行查询时,它显示(将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。)错误。请帮我找出问题。
代码
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相关联?如果您详细说明您正在尝试做什么,添加到问题数据样本和使用的表的架构,我们可能会建议一个更好的解决方案。
标签: sql-server datetime