SQLSERVER中对日期操作时的一个注意事项

[ 2006-06-07 22:58:57 | 作者: progame ]
文字大小: | |
在一个存储过程中 我要统计一年的日期段
我图省事 对日期操作很反常地用了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)

可以看到 我需要的是这一年的数据
如果用>= 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: /feed.asp?q=comment&id=45

标签: Sql Server

这篇日志没有评论.

发表
表情图标
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
UBB代码
转换链接
表情图标
悄悄话
用户名:   密码:   (非注册用户不需要输入密码) 注册?
验证码(不区分大小写) * 请输入验证码