Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2352194
  • 博文数量: 321
  • 博客积分: 3440
  • 博客等级: 中校
  • 技术积分: 2992
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-24 09:08
个人简介

我就在这里

文章分类

全部博文(321)

文章存档

2015年(9)

2014年(84)

2013年(101)

2012年(25)

2011年(29)

2010年(21)

2009年(6)

2008年(23)

2007年(23)

分类: Sybase

2009-01-09 14:49:34

如何计算指定时间段的周末天数

January 6th, 2009 · No Comments


这是SQL Anywhere新闻组中“通用”组的一个问题:

 

问:如何能够得到一个时间段内的周六和周日的天数呢?例如,在2007-12-142008-01-29之间。

 

答:SELECT语句可以这样完成:

 

SELECT COUNT(*)
FROM ( SELECT DATEADD (
               DAY, day_generator.row_num, 2007-12-14)
               AS generated_date
       FROM sa_rowgenerator (
               0, DATEDIFF ( DAY, 2007-12-14, 2008-01-29 ) )
            AS day_generator )
   AS date_generator
WHERE DOW ( date_generator.generated_date ) IN ( 1, 7 );

 

工作原理:

DATEDIFF(…)函数返回两个日期之间的总天数。

 

FROM sa_rowgenerator(…)过程调用生成结果集row_num = 0,1,2,…至总天数。

 

DATEADD(…)调用使用row_num来计算时间段内的每个日期。

 

DOW(…)调用返回一个星期中的每天编号,周日为1,周六为7,以此类推。

 

SELECT COUNT(*)…WHERE最后返回周六和周日的天数。

阅读(4096) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~