between 问题

kckcxy 2012-10-30 05:06:34

declare @t table(brq varchar(10),erq varchar(10),hh int,ye dec(6,2))
insert into @t select '2006-01-02' ,'2012-10-1',1111 ,2.01
union all select '2006-01-05' ,'2012-10-31',1111 ,3.51
union all select '2006-01-10' ,'2012-10-1',1111 ,2.55
union all select '2006-01-02' ,'2012-10-30',2222 ,3.00
union all select '2006-01-04' ,'2012-10-1',2222 ,2.00
union all select '2006-01-05' ,'2012-10-1',3333 ,6.54
union all select '2006-01-06' ,'2012-10-1',3333 ,5.23
union all select '2006-01-07' ,'2012-10-1',3333 ,8.55

select * from @t where convert(nvarchar(10),getdate(),120) between brq and erq


结果我明白,取出包含当前日期区间的记录,
请问 convert(nvarchar(10),getdate(),120) between brq and erq 里的convert(nvarchar(10),getdate(),120)起什么作用
这个between是怎么运行的?
...全文
125 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2012-10-30
  • 打赏
  • 举报
回复
由于getdate()产生日期时分秒毫秒这样的数据,所以用convert来获取日期部分然后between and 会比较好,也可以使用convert(date,getdate())来直接获取,
kensouterry1 2012-10-30
  • 打赏
  • 举报
回复
在@t里面筛选出between brq and erq brq和erq 之间包含当前时间的行

即 GETDATE()>=brq AND GETDATE()<=erq 的所有行

汤姆克鲁斯 2012-10-30
  • 打赏
  • 举报
回复
select getdate(),convert(nvarchar(10),getdate(),120)
你运行一下就知道了

就是把日期的时间部分去掉

开启时代 2012-10-30
  • 打赏
  • 举报
回复
先处理 convert(nvarchar(10),getdate(),120) 然后再筛选
汤姆克鲁斯 2012-10-30
  • 打赏
  • 举报
回复
就是满足 between 前面这个值 在 brq 和erq 这个范围内的
开启时代 2012-10-30
  • 打赏
  • 举报
回复
convert(nvarchar(10),getdate(),120) 作用:
2012-10-30 17:12:53.027 转换成 2012-10-30

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧