教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
编程设计
  当前位置: 库库中文网 · 数据库类教程 · MSSQL教程 · MsSql综合技巧

[馨郁星愿]某个日期段内,怎么计算出这个日期段内地周末数

 
学院最新推荐文章
PS教程推荐
 
『[馨郁星愿]某个日期段内,怎么计算出这个日期段内地周末数』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2008-6-4 
  比如有个一日期段:2008-5-25 -----2008-6-3
  比如周末我们定义为周五、周六为周末日,请问怎么计算出,这个时间段内,有多少个周末数呢?

这个问题第1个回答:
循环这个时间..
然后用Datepart判断.
这个问题第2个回答:
参考计算工作日的帖子:

http://topic.csdn.net/t/20060317/14/4621378.html
这个问题第3个回答:
SQL code

select count(1) from tb where (datepart(wk,indate)= 5 or datepart(wk,indate)= 6) and indate between 2008-5-25  and 2008-6-3 



这个问题第4个回答:
SQL code

create   function   f_getFreeDay(@Sdate   datetime,@Edate   datetime)   

  returns   int   

  as   

  begin   

          declare   @t   table(id   int   identity(0,1),i   int)   

          declare   @cnt   int   

          insert   into   @t   select   1   from   sysobjects   

            

          select   @cnt=count(*)     

          from   

                  (select   dates=dateadd(dd,id,@Sdate)   from   @t   where   dateadd(dd,id,@Sdate)<=@Edate)   a   

          where   

                  datepart(dw,dates)   in(1,7)   

          return   @cnt   

  end   

  go   

    

  select   dbo.f_getFreeDay(getdate()-100,getdate())   

  go   

    

  drop   function   f_getWordDay   

  go   


这个问题第5个回答:
SQL code

[code=SQL]--2008-5-25 -----2008-6-3

select top 300 id=identity(int,0,1) into # from sys.columns,sys.objects



select dy,datepart(weekday,dy) wk

from

(

  select dateadd(day,id,'2008-5-23') dy

  from #

  where dateadd(day,id,'2008-5-23')<='2008-6-3'

) t

where datepart(weekday,dy) in(5,6)



/*

dy                      wk

----------------------- -----------

2008-05-23 00:00:00.000 6

2008-05-29 00:00:00.000 5

2008-05-30 00:00:00.000 6



*/



[/code]
这个问题第6个回答:
哇哈哈~~各位都很热心啊~!~~~这么快就有怎么多解决方法了,谢谢,我先看看
这个问题第7个回答:
SQL code

declare @b datetime,@e datetime

select top 1000 id=identity(int,0,1) into # from sys.columns,sys.objects

select count(*)

from

(

  select dateadd(day,id,@b) dy

  from #

  where dateadd(day,id,@b)<=@e) t

where datepart(weekday,dy) in(5,6)


这个问题第8个回答:
to 小梁

select * from sys.columns,sys.objects
服务器: 消息 208,级别 16,状态 1,行 1
对象名 'sys.columns' 无效。
服务器: 消息 208,级别 16,状态 1,行 1
对象名 'sys.objects' 无效。
这个问题第9个回答:
怎么总看不到我回复的信息呢??

用 5,6来判断需要设置 SET DATEFIRST
这个问题第10个回答:
SQL code

declare @s datetime,@e datetime

declare @m1 varchar(100)

set @s='2008-01-01'

set @e='2008-05-01'

create table #(dt datetime)

while @s<=@e

begin

    insert into # select @s set @s=dateadd(day,1,@s)

end

select count(*) from # where datepart(weekday,dt) in (6,7)--星期日为1,星期一为2,星期二为3....

drop table #


这个问题第11个回答:
为什么要设置这个?

可以看到你的回复啊
这个问题第12个回答:
引用 8 楼 hanjs 的回复:
to 小梁

select * from sys.columns,sys.objects
服务器: 消息 208,级别 16,状态 1,行 1
对象名 'sys.columns' 无效。
服务器: 消息 208,级别 16,状态 1,行 1
对象名 'sys.objects' 无效。


你的是2000
改改系统表/


SQL code

select top 300 id=identity(int,0,1) into # from syscolumns,sysobjects



select dy,datepart(weekday,dy) wk

from

(

  select dateadd(day,id,'2008-5-23') dy

  from #

  where dateadd(day,id,'2008-5-23')<='2008-6-3'

) t

where datepart(weekday,dy) in(5,6)


】【关闭窗口
·上页:
·下页:
相关文章
 
     数据库类教程 - MsSql综合技巧
普通教程sql还原疑难
普通教程拷贝表字段地疑难!
普通教程存储过程地逻辑结构疑难,求教下
普通教程SQL语句在存储过程中地小疑难?
普通教程存储过程中一句SQL语句地条件设
普通教程在默认地设定下 SQL Server 不允
普通教程很傻很天真
普通教程SQL高手请进!!由于上一次发问
普通教程SQL Server 2000 表中怎么样建立
普通教程求opendatasource语句:SQLServ
普通教程求SQL语句:删除zcm和xlrq完全相
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光