SQLSERVER中对日期操作时的一个注意事项
[ 2006-06-07 22:58:57 | 作者: progame ]
在一个存储过程中 我要统计一年的日期段
我图省事 对日期操作很反常地用了between..and..而还是>@datefrom and <@dateto
可以看到 我需要的是这一年的数据
如果用>= and < 那么@dateto也只要设为cast(cast(@year + 1 as varchar(4)) + '-01-01' as datetime)
当然也可以用
select @dateto = cast(cast(@year as varchar(4)) + '-12-31 23:59:59.997' as datetime)
但这样写得难看了一点,于是我用了上面的代码
可是我们知道sql server2000中datetime的精度是3ms
于是select @dateto = dateadd(ms, -1, @dateto)后实际@dateto还是原来的值
所以对于这种操作,应该用
select @dateto = dateadd(ms, -3, @dateto)才可以
评论Feed: /feed.asp?q=comment&id=45
我图省事 对日期操作很反常地用了between..and..而还是>@datefrom and <@dateto
select @datefrom = cast(cast(@year as varchar(4)) + '-01-01' as datetime)
select @dateto = cast(cast(@year + 1 as varchar(4)) + '-01-01' as datetime)
select @dateto = dateadd(ms, -1, @dateto)
select @dateto = cast(cast(@year + 1 as varchar(4)) + '-01-01' as datetime)
select @dateto = dateadd(ms, -1, @dateto)
可以看到 我需要的是这一年的数据
如果用>= and < 那么@dateto也只要设为cast(cast(@year + 1 as varchar(4)) + '-01-01' as datetime)
当然也可以用
select @dateto = cast(cast(@year as varchar(4)) + '-12-31 23:59:59.997' as datetime)
但这样写得难看了一点,于是我用了上面的代码
可是我们知道sql server2000中datetime的精度是3ms
于是select @dateto = dateadd(ms, -1, @dateto)后实际@dateto还是原来的值
所以对于这种操作,应该用
select @dateto = dateadd(ms, -3, @dateto)才可以
评论Feed: /feed.asp?q=comment&id=45
标签:
Sql Server
您可能感兴趣的文章:
Sql Server 自动查询优化有时候也是靠不住的 (progame at 2006-10-19)
小心getdate() (progame at 2007-08-16)
参数化SQL, 性能的调优抑或是杀手? (progame at 2007-12-13)
Only text pointers are allowed in work tables (progame at 2008-06-24)
SQL SERVER 2000中如何让union all构造出来的视图(view)利用到索引 (progame at 2006-04-28)
聚集索引和uniqueidentifier (guid) 不得不说的故事 (progame at 2006-08-03)
sql server 2000的一个bug (progame at 2006-09-23)
没有日志,只有MDF文件如何恢复数据库(转) (progame at 2006-10-17)
这篇日志没有评论.

