我正在尝试计算SQL Server 2008中两个日期之间状态为0的记录
有我的程序,但这不是正确的引发错误。



程序看起来像

CREATE procedure sp_SerchPickupHispanicBetweenDates
@date1 date,
@date2 date
as
select COUNT ( Pickuphispanic ) from  pickup
where  Pickuphispanic = 1 and pickupdate like between @date1+ '%' and @date1 +'%'

在尝试在互联网上搜索解决方案,但没有成功。
任何想法如何纠正它的正确性?
我也有选择陈述
select COUNT ( Pickuphispanic ) from  pickup
where  Pickuphispanic = 1 and pickup.pickupdate between '2006-07-01' and '2010-12-31'

最佳答案

@date1@date2参数的数据类型为DATE,因此您不能在这些值后面附加%(使用%运算符时,LIKE只能用于基于字符串的数据类型;而且:无法来应用来应用使用LIKE值进行搜索)。

使用此代替:

CREATE procedure procSerchPickupHispanicBetweenDates
   @date1 date,
   @date2 date
AS
   SELECT COUNT (Pickuphispanic)
   FROM dbo.pickup
   WHERE Pickuphispanic = 1
     AND pickupdate BETWEEN @date1 AND @date2

要调用它,请使用以下语法:
EXEC procSerchPickupHispanicBetweenDates '2006-07-01', '2010-12-31'

(不带花括号,不带括号-仅指定两个日期),或:
EXEC procSerchPickupHispanicBetweenDates @date1 = '2006-07-01', @date2 = '2010-12-31'

10-06 10:57