导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

判断某一天是否属于本周~~,周日会判断不准

mmcgzs 2012-08-21 09:26:51
比如下面

set datefirst 1 --设置周一为每周的第一天
select datediff(wk,'2012-8-19',getdate()) --判断今天和上周是是否属于同一周

返回0,何解??
...全文
111 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
renolit 2012-08-21
select datename(week,'2012-08-21') --今天是今年的第几周
select datename(weekday,'2012-08-21') --今天是周几
回复
mmcgzs 2012-08-21
[Quote=引用 7 楼 的回复:]
引用楼主 的回复:
比如下面

set datefirst 1 --设置周一为每周的第一天
select datediff(wk,'2012-8-19',getdate()) --判断今天和上周是是否属于同一周

返回0,何解??

原因是你执行set datefirst 1之后是sql server把最后结果给你转化为以1为开始的形式,但是你直接执行datediff(wk,'20……
[/Quote]

如何修改 datediff 内部的周一的设置?
回复
孤独加百列 2012-08-21
[Quote=引用楼主 的回复:]
比如下面

set datefirst 1 --设置周一为每周的第一天
select datediff(wk,'2012-8-19',getdate()) --判断今天和上周是是否属于同一周

返回0,何解??
[/Quote]
原因是你执行set datefirst 1之后是sql server把最后结果给你转化为以1为开始的形式,但是你直接执行datediff(wk,'2012-8-19',getdate())它内部还是以周日为每周开始,所以语句内取到的都是35周,所以结果是0.如果你把语句分开执行datepart(wk,getdate()) - datepart(wk,'2012-08-19')是先把每个函数的结果转化为以1为开始的形式在进行减的操作就可以得出1的结果了。
回复
wobuainiyes 2012-08-21
[Quote=引用 2 楼 的回复:]

datediff 返回两个日期的差
19号到今天才2天,当然不够一周了,所以是0了
[/Quote]

原来是这样,学写了
回复
mmcgzs 2012-08-21
[Quote=引用 2 楼 的回复:]
datediff 返回两个日期的差
19号到今天才2天,当然不够一周了,所以是0了
[/Quote]

我用的参数是 wk,这和差几天没关系
比如下面两个日期,差一天,就返回1啊

select datediff(wk,'2012-8-18','2012-8-19')
回复

set datefirst 1 --设置周一为每周的第一天
select datepart(wk,getdate())-DATEPART(wk,'2012-8-19')
--先取今天的周数和2012-08-19的周数再做减法
select datediff(wk,'2012-8-19',getdate())--datediff计算的是跨度
回复
zhangyangziwo 2012-08-21
'2012-08-19' 和getdate()即'2012-08-21'
在一周内,所以是0
回复
筱筱澄 2012-08-21
datediff 返回两个日期的差
19号到今天才2天,当然不够一周了,所以是0了
回复
筱筱澄 2012-08-21
set datefirst 1 --设置周一为每周的第一天
select datepart(wk,getdate())-DATEPART(wk,'2012-8-19')
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告