通过开始时间和结束时间按月统计工作天数
来源:互联网 发布:旅游成都和长沙 知乎 编辑:程序博客网 时间:2024/05/22 14:55
这个问题如果给出的开始时间和结束时间是不跨月的比较容易做,直接用datediff()函数求出每个时间段的天数,然后sum一下就可以了,但如果时间段跨月了,就不能这样算了。
这里借助一下master库的spt_values表,对,还是它,也可以通过自增列和其他一些系统表做个临时序列表。
--要统计每台机每个月使用情况
if object_id('[T]') is not null drop table [T]
go
create table [T]([机器号] varchar(2),[startdate] datetime,[enddate] datetime)
insert [T]
select '1#','2009-10-20','2009-10-25' union all
select '1#','2009-09-26','2009-10-05' union all
select '2#','2009-09-12','2009-09-20' union all
select '2#','2009-09-25','2009-10-10' union all
select '2#','2009-10-25','2009-11-15' union all
select '3#','2009-08-10','2009-11-05' union all
select '2#','2009-11-25','2009-12-30'
select
机器号,
convert(varchar(7),dt,120) as [年/月],
count(1) as 天数
from
if object_id('[T]') is not null drop table [T]
go
create table [T]([机器号] varchar(2),[startdate] datetime,[enddate] datetime)
insert [T]
select '1#','2009-10-20','2009-10-25' union all
select '1#','2009-09-26','2009-10-05' union all
select '2#','2009-09-12','2009-09-20' union all
select '2#','2009-09-25','2009-10-10' union all
select '2#','2009-10-25','2009-11-15' union all
select '3#','2009-08-10','2009-11-05' union all
select '2#','2009-11-25','2009-12-30'
select
机器号,
convert(varchar(7),dt,120) as [年/月],
count(1) as 天数
from
(
select 机器号,dateadd(dd,b.number,a.startdate) as dt
from T as a,master..spt_values b
where b.type='P'
select 机器号,dateadd(dd,b.number,a.startdate) as dt
from T as a,master..spt_values b
where b.type='P'
and dateadd(dd,b.number,a.startdate)<=a.enddate
) t
group by
) t
group by
机器号,convert(varchar(7),dt,120)
order by
order by
机器号,convert(varchar(7),dt,120)
/**
机器号 年/月 天数
---- ------- -----------
1# 2009-09 5
1# 2009-10 11
2# 2009-09 15
2# 2009-10 17
2# 2009-11 21
2# 2009-12 30
3# 2009-08 22
3# 2009-09 30
3# 2009-10 31
3# 2009-11 5
(10 行受影响)
**/
/**
机器号 年/月 天数
---- ------- -----------
1# 2009-09 5
1# 2009-10 11
2# 2009-09 15
2# 2009-10 17
2# 2009-11 21
2# 2009-12 30
3# 2009-08 22
3# 2009-09 30
3# 2009-10 31
3# 2009-11 5
(10 行受影响)
**/
- 通过开始时间和结束时间按月统计工作天数
- DB2怎么根据开始和结束时间算相隔天数
- 输入开始时间和工作天数,计算结束时间,需考虑节假日周末和调休
- 输入【开始时间】和【结束时间】,计算工作天数,需考虑节假日周末和调休
- 根据请假开始时间和结束时间获得天数小时数分钟数
- 输入开始时间和结束时间获取之间相隔的天数,月数,年数
- 计算结束时间与开始时间的相差的天数:
- js 通过传入 开始时间和结束时间 算出相差多少秒 分钟 相差时间
- 通过时间,获得星期的开始时间,结束时间
- javascript 比较开始时间和结束时间
- JS校验开始时间和结束时间
- JS开始时间和结束时间比较
- 本周的开始时间和结束时间
- layDate开始时间和结束时间
- php获到一个月的最大天数,和这个星期的开始时间和结束时间
- JAVA通过某年的几周获取该周的开始时间和结束时间
- js验证开始时间和结束时间 结束时间不能比开始时间早
- java输出执行开始时间,结束时间和运行时间
- java编写程序输出下列结果
- ASP.NET CS文件中输出JavaScript脚本的3种方法以及区别
- 一个基于 osip 库的 UAC 和 UAS 的代码整理
- 使用VB创建PPPoE以及VPN拨号连接的核心代码
- 搜索第i到第j条记录
- 通过开始时间和结束时间按月统计工作天数
- AMPL:A Mathematical Programming Language 翻译
- 多上传好东西供大家分享
- C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)
- 不能读取记录;在MSysObjects上没有读取数据权限-80040E09
- 网页挂马解析
- 代码实现VPN连接
- FCKeditor 在 linux 下 无法上传图片的问题,解决方案
- KEIL--生成多个工程