我正在尝试计算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'