Office中国论坛/Access中国论坛

标题: 在日期范围内对每个月进行天数统计 [打印本页]

作者: 2008-cjl    时间: 2013-6-17 11:56
标题: 在日期范围内对每个月进行天数统计
在日期范围内对每个月进行天数统计
例如,如果开始日期为2004-10-01,结束日期为2005-01-06,那么我应该如何在上述日期范围内对每个月进行分组,来得到如下的输出:
年月    天数
2004/10 31
2004/11 30
2004/12 31
2005/01 6
感谢您给予我的任何帮助

作者: access学习交流    时间: 2013-6-17 14:14
给个思路,具体没有实现。枚举一下 应该行
1月31天 2月作单独判断 条件 是年分 3月31天4月30天5月31天...判断到12月份  。两个月份相减就能得出多少天了。 可能感觉有点麻烦。

作者: access新闻爱好者    时间: 2013-6-17 15:15
select format(tm,'yyyy-mm'),count(*) from test group by format(tm,'yyyy-mm')  试试这个语句
作者: 轻风    时间: 2013-6-17 16:03
试做个示例,结果是正确了,不知道我做的是否复杂了点。
[attach]51954[/attach]

作者: todaynew    时间: 2013-6-17 16:47
Function GetDayArr(ByVal d0 As Date, ByVal d1 As Date) As Variant
    '功能:返回每月天数数组
    '参数:d0 -- 起始日期 d1 -- 截止日期
    Dim a() As Long
    Dim n As Long
    Dim date0 As Date, date1 As Date
    n = DateDiff("m", d0, d1)
    ReDim a(n)
    date0 = d0
    For i = 0 To UBound(a)
        date1 = DateSerial(Year(date0), Month(date0) + 1, 1)
        If date1 > d1 Then date1 = DateAdd("d", 1, d1)
        a(i) = DateDiff("d", date0, date1)
        date0 = date1
    Next
    GetDayArr = a
End Function
作者: aslxt    时间: 2013-6-17 19:00
轻风 发表于 2013-6-17 16:03
试做个示例,结果是正确了,不知道我做的是否复杂了点。


学习了。不复杂,用生成表比直接用查询简单多了!
作者: 2008-cjl    时间: 2013-6-17 21:29
我想在查询内做个简单的月份天数统计。附表请哪位老大帮做做看下
作者: 2008-cjl    时间: 2013-6-18 12:47
哪位老师帮我做下直接在查询内生成,通过表中JHKS,JHWC(计划开始和计划完成)来求月份天数,谢谢啦,清风老师能指点下不?
作者: aslxt    时间: 2013-6-18 14:58
本帖最后由 aslxt 于 2013-6-18 15:06 编辑
2008-cjl 发表于 2013-6-18 12:47
哪位老师帮我做下直接在查询内生成,通过表中JHKS,JHWC(计划开始和计划完成)来求月份天数,谢谢啦,清风 ...

是指求每一行的计划开始到计划完成之间的总天数?
是指求每一行的计划开始到计划完成之间的各月之天数?
还是根据表的最大最小日期查询其间的各月之天数?
要不做一个查询结果的表并说明一下。

作者: 2008-cjl    时间: 2013-6-20 08:09
是指求每一行的计划开始到计划完成之间的各月之天数
作者: 2008-cjl    时间: 2013-6-20 08:09
aslxt 发表于 2013-6-18 14:58
是指求每一行的计划开始到计划完成之间的总天数?
是指求每一行的计划开始到计划完成之间的各月之天数? ...

是指求每一行的计划开始到计划完成之间的各月之天数
作者: 轻风    时间: 2013-6-20 09:44
每一行对应的“计划开始到计划完成之间的各月之天数”肯定是多行的,你想怎么展现出来?
作者: 2008-cjl    时间: 2013-6-20 11:12
轻风 发表于 2013-6-17 16:03
试做个示例,结果是正确了,不知道我做的是否复杂了点。

做成查询能吗
作者: 2008-cjl    时间: 2013-6-20 16:22
在线等待老师回复:求每一行的计划开始到计划完成之间的各月之天数
作者: cgsilicone    时间: 2013-6-20 17:43
本帖最后由 cgsilicone 于 2013-6-20 18:09 编辑

横表很容易得到这样的表(中间月份数如果固定也可以得到明细)
  
其它项目
  
  
开始日期
  
  
完成日期
  
  
总天数
  
  
开始月份天数
  
  
完成月份天数
  
  
中间月份天数
  
  
1
  
  
2013-1-1
  
  
2013-5-11
  
  
130
  
  
31
  
  
11
  
  
89
  
  
2
  
  
2013-2-13
  
  
2013-3-28
  
  
43
  
  
16
  
  
28
  
  
0
  
  
3
  
  
2013-5-1
  
  
2014-4-28
  
  
362
  
  
31
  
  
28
  
  
304
  
  
4
  
  
2013-6-15
  
  
2018-5-28
  
  
1808
  
  
16
  
  
28
  
  
1765
  


要得到竖表,你的问题和aslxt的帖子实质上是一样的:
http://www.office-cn.net/thread-117020-1-1.html
可以参考修改成你要的内容。
  
其它项目
  
  
月份
  
  
天数
  
  
1
  
  
2013年1月
  
  
31
  
  
1
  
  
2013年2月
  
  
28
  
  
1
  
  
2013年3月
  
  
31
  
  
1
  
  
2013年4月
  
  
30
  
  
1
  
  
2013年5月
  
  
11
  
  
2
  
  
2013年2月
  
  
16
  
  
2
  
  
2013年3月
  
  
18
  
  
3
  
  
2013年5月
  
  
31
  
  
3
  
  
2013年6月
  
  
30
  
  
3
  
  
  
  
  
  
3
  
  
2014年3月
  
  
31
  
  
3
  
  
2014年4月
  
  
28
  


作者: cgsilicone    时间: 2013-6-20 17:47
本帖最后由 cgsilicone 于 2013-6-20 18:10 编辑
2008-cjl 发表于 2013-6-20 16:22
在线等待老师回复:求每一行的计划开始到计划完成之间的各月之天数

你的附件我的版本打不开,请给我一个例子,可以用查询来完成。
作者: 2008-cjl    时间: 2013-6-20 18:28
2003格式
作者: 2008-cjl    时间: 2013-6-20 18:29
cgsilicone 发表于 2013-6-20 17:47
你的附件我的版本打不开,请给我一个例子,可以用查询来完成。

麻烦老师了
作者: 2008-cjl    时间: 2013-6-22 09:12
在线请教
作者: 2008-cjl    时间: 2013-6-24 18:13
在查询里真的不能实现吗,很需要,因为这样我就可以实现分类汇总每个月完成量,把计划分解到每个月,一目了然
作者: 2008-cjl    时间: 2013-6-25 10:37
cgsilicone 发表于 2013-6-20 17:43
横表很容易得到这样的表(中间月份数如果固定也可以得到明细)

想得到竖表,求老师帮忙,我已经找了好多老师,未能解决,请你帮忙做下
作者: 2008-cjl    时间: 2013-6-25 10:40
cgsilicone 发表于 2013-6-20 17:47
你的附件我的版本打不开,请给我一个例子,可以用查询来完成。

通过Sgrws表内开始时间和结束时间二个字段来做一个查询实现上面的功能
大多情况下是在规定时间内完成多少工程量,也就是给出计划工期和计划完成量,那么,通过查询做出每个月完成多少工作量就太好了,把计划分解到每个月,如果能实现我觉得能能很强大的


作者: 2008-cjl    时间: 2013-6-25 10:41
cgsilicone 发表于 2013-6-20 17:47
你的附件我的版本打不开,请给我一个例子,可以用查询来完成。
作者: cgsilicone    时间: 2013-6-25 15:03
本帖最后由 cgsilicone 于 2013-6-25 16:55 编辑

见附件,看看是不是你要的结果:
通过两个查询完成,第一个查询是因为不新建表才需要(导致效率低,运行慢),实际应用中最好新建一张月份表。
作者: 竹笛    时间: 2013-6-25 15:13
建表Dcount函数
作者: 2008-cjl    时间: 2013-6-25 16:13
竹笛 发表于 2013-6-25 15:13
建表Dcount函数

帮做下看看
作者: 2008-cjl    时间: 2013-6-28 18:01
cgsilicone 发表于 2013-6-25 15:03
见附件,看看是不是你要的结果:
通过两个查询完成,第一个查询是因为不新建表才需要(导致效率低,运行慢), ...

非常非常感谢老师的指导,在我看来非常大的问题,你只用了简单的方法解决了,太好了,真想请你搓一顿,喝两盅!忒感谢!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3