我有一个存储过程,循环遍历财年的几个月,并为每个月的项目计数。我知道有一个事实,有176个项目,但是当我运行它时,它返回的总计数是182。我尝试从@EndDate中删除一秒,但是我的总计数是165.因此,我要么计数项目两次,要么不包括所有这些。任何人都可以帮助我在这里做错了吗?下面是我在做什么一个精简版:在DATETIME中使用BETWEEN的SQL Server查询问题
DECLARE @Date DATETIME
DECLARE @EndDate DATETIME
SELECT @Date = CAST((@Year - 1) as VARCHAR) + '-07-01'
SELECT @EndDate = DATEADD(Month, 1, @Date)
DECLARE @Count INT
SELECT @Count = 0
WHILE @Count < 12
BEGIN
SELECT
COUNT(yai.ID)
FROM
table_1 yai
INNER JOIN table_2 yat ON yai.ID = yat.ID
WHERE
(yat.Date_Received BETWEEN CONVERT(VARCHAR, @Date, 101) AND CONVERT(VARCHAR, @EndDate, 101)) AND
yai.Pro_Type = @Value AND yat.Type = 'PC'
SELECT @Count = @Count + 1
SELECT @Date = DATEADD(MONTH, 1, @Date)
SELECT @EndDate = DATEADD(MONTH, 1, @EndDate)
END
yat.date_received是什么类型的? – 2009-09-22 18:19:16
忽略与类型101的转换,这只是我发布此代码之前正确的事。他们是日期时间字段,并且我试图与直接日期时间值 – Jhorra 2009-09-22 18:28:17