存储过程帮助:将年份作为参数传递以获得结果

1 sql-server parameters datetime stored-procedures sql-server-2008-r2

我试图基本输入一年(不是整个日期)来取回一组结果,这些结果将告诉我今年销售的东西数量.不过我不知道怎么做.下面是我所拥有的一个例子.

ALTER PROC OrderYear
(@OrderYear datetime)
AS

SELECT Orderdate as [Year],COUNT(SalesOrderID) as Count
FROM Sales.SalesOrderHeader
WHERE @OrderYear=YEAR(OrderDate)
GROUP BY OrderDate

BEGIN
SET NOCOUNT ON
END

EXEC OrderYear '2005'
Run Code Online (Sandbox Code Playgroud)

Rem*_*anu 7

您希望将查询谓词表示为范围,因为范围是可搜索的:

SELECT Orderdate as [Year],COUNT(SalesOrderID) as Count
FROM Sales.SalesOrderHeader
WHERE OrderDate >= @firstDayOfYear AND OrderDate <= @lastDayOfYear
GROUP BY OrderDate;
Run Code Online (Sandbox Code Playgroud)

因此,关键是计算机@firstDayOfYear@lastDayOfYear从某一年.我会将此作为练习留给读者.

  • 或者`OrderDate <@ firstDayOfNextYear`也可以使用日期时间. (4认同)