选择落在午夜和给定日期之间的所有行

时间:2013-03-07 16:11:53

标签: sql-server sql-server-2008 tsql sql-server-2008-r2

在SQL Server 2008中,我有一个存储过程,它接受输入日期。我想选择从该日期午夜开始到晚上11:59的所有行。

CREATE PROCEDURE MyProc
@InputDate DATETIME
AS
SELECT * FROM MyTable WHERE DateField >= @InputDate

所以我希望能够像这样调用这个proc类似的东西:

EXEC MyProc @InputDate=CONVERT(DATETIME, '3/5/2013')

它应该返回所有行,日期介于'3/5/2013 0:0:0' AND '3/5/2013 11:59:59'。输入日期应忽略时间组件,只需查看日期并附加自己的时间组件(至少我认为应该这样)

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

您可以使用准确到一天的DATE数据类型。

CREATE PROCEDURE MyProc
@InputDate DATE
AS
SELECT * FROM MyTable WHERE CAST(DateField AS DATE) = @InputDate

EXEC MyProc @InputDate='2013-03-05'

拥有SQLFiddle