Din*_*rer 1 sql t-sql sql-server sql-server-2005
我在SQLServer 2005中存储事件,事件发生的时间很重要,必须存储在日期库中.在where子句中编写日期范围检查的最快方法是什么,以确保选择当天的所有内容?
目前,当传递@DateStart和@DateEnd时,我将@DateStart设置为午夜,并将@DateEnd设置为午夜之前的最后一个瞬间,作为当天抓住每个可能事件的第一件事.
IF (@DateStart IS NOT NULL)
BEGIN
SET @DateStart = CAST (
( CAST (DATEPART (yyyy,@DateStart) AS NVARCHAR(4)) +'/'+
CAST (DATEPART (mm,@DateStart) AS NVARCHAR(2)) +'/'+
CAST (DATEPART (dd,@DateStart) AS NVARCHAR(2)) +' '+
'00:00:00.000'
)
AS DATETIME)
END
IF (@DateEnd IS NOT NULL)
BEGIN
SET @DateEnd = CAST (
( CAST (DATEPART (yyyy,@DateEnd) AS NVARCHAR(4)) +'/'+
CAST (DATEPART (mm,@DateEnd) AS NVARCHAR(2)) +'/'+
CAST (DATEPART (dd,@DateEnd) AS NVARCHAR(2)) +' '+
'23:59:59.997'
)
AS DATETIME
)
END
Run Code Online (Sandbox Code Playgroud)
所以where子句很容易阅读:
WHERE(EventDate> = @DateStart AND EventDate <= @DateEnd)
谢谢,