您的位置:首页 > 其它

获得当天的时间范围(精确到毫秒)

2008-06-02 17:40 701 查看
Declare@iint,@t1datetime,@t2datetime;
select@i=0,@t1=getdate();
while@i<1000000
begin
declare@BeginDatedatetime,@EndDatedatetime
--方法1,用datediff
select@BeginDate=cast(datediff(day,0,getdate())asdatetime)
,@EndDate=dateadd(ms,-2,datediff(day,-1,getdate()))
--select@BeginDatedatetime,@EndDate
set@i=@i+1
end
select@t2=getdate();
printconvert(nvarchar(100),convert(float,@t2-@t1))
go

Declare@iint,@t1datetime,@t2datetime;
select@i=0,@t1=getdate();
while@i<1000000
begin
declare@BeginDatedatetime,@EndDatedatetime
--方法2,获取当前天数来计算
select@BeginDate=ROUND(CONVERT(float,getdate()),0,1)--获取日期部分2008-05-0100:00:00.000
,@EndDate=@BeginDate+.999999999--计算日期最后一秒2008-05-0123:59:59.997
--select@BeginDatedatetime,@EndDate
set@i=@i+1
end
select@t2=getdate();
printconvert(nvarchar(100),convert(float,@t2-@t1))


测试结果

7.8125e-005
7.24923e-005
第二种会比第一种方法快那么一点,呵呵.

其实计算为2天的范围更好
'2008-06-0100:00:00.000''2008-06-0200:00:00.000'

比较时用CreatTime>=@beginandCreateTime<@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: