65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL Server 中精确的 DATETIME 范围搜索

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.75/5 (4投票s)

2009年12月2日

CPOL
viewsIcon

19374

在 SQL (或存储过程中) 中搜索日期时间范围时,我们不能简单地这样做:select * from where CreateTime >= @DateFrom and CreateTime <= @DateTo 如果您的搜索包含日期,并且不关心时间(大多数用户都不关心),那么您需要添加一些额外的...

在 SQL (或存储过程中) 中搜索日期时间范围时,我们不能简单地这样做
select * from <table>
where CreateTime >= @DateFrom and CreateTime <= @DateTo
如果您的搜索包含日期,并且不关心时间(大多数用户都不关心),那么您需要添加一些额外的代码才能获得正确的结果。 基本上,您需要将一天加到 @DateTo 并进行截断。 这里有一个 Sql Server 2005 函数可以帮助您
CREATE FUNCTION [dbo].[trunc]
(
    @dt datetime
)
RETURNS datetime
AS
BEGIN
            return dateadd(day, datediff(day, 0, @dt), 0);
END
现在您的 SQL 应该如下所示
select * from <table>
where CreateTime >= dbo.trunc(@DateFrom)
and CreateTime < dbo.trunc(@DateTo + 1)
如果您想了解更多信息,请访问: SQL Server 中精确的 DATETIME 范围搜索[^]
© . All rights reserved.