mysql 查询一年的数据 要按每个月20号统计 如何做 一条语句
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 查询一年的数据 要按每个月20号统计 如何做 一条语句相关的知识,希望对你有一定的参考价值。
比如说 我想查2008年的数据 就是从2007年12月21号到2008年12月21号 每个月要求分开
select 时间,datepart(mm,时间) as 月份 from 表 where 时间>'2007-12-21' and 时间<'2008-12-21'group by datepart(mm,时间)
这个是按照月份分组,具体的表字段你没发出来,只能这么写了 参考技术A GROUP BY
CASE
WHEN DAY( 日期字段 > 20 ) THEN MONTH ( DATE_ADD( 日期字段, INTERVAL 12 DAY ) )
ELSE MONTH( 日期字段 )
END
上面这个处理,就是根据 日期字段的 天, 作判断。
假如天 > 20。 那么认为这个数据, 应该是被计算到下一个月的
那么, 取 这一天 + 12 天 以后的 月份值 (肯定是下一个月的了)
否则的话, 也就是 天<=20, 还是计算到当前月的, 那就简单得 MONTH( 日期字段 ) 来获取当前月了。本回答被提问者采纳 参考技术B select max(所有字段)
from biao
where date between '2008-01-01' and '2008-12-31'
group by month(date) 参考技术C 按照你说的 系统应该有个财务核算期对应的表
就是核算年 核算月 开始时间 结束时间
2011 1 2010-12-21 2011-1-20 23:59:59
2011 2 2011-01-21 2011-02-20 23:59:59
...........
2011 12 2011-11-21 2011-12-20 23:59:59
类似这样的表,这样才可以自定义核算期(譬如表为Temp16)
如果有的话就好办了
需要统计数据的表譬如为 Temp30
SELECT Temp30.*,Temp16.period1,Temp16.year1
FROM temp30 ,dbo.Temp16
WHERE temp30.date_of_fill BETWEEN Temp16.date_begin AND Temp16.date_end
这样核算年,核算月就对应上了
有了以上数据基础
譬如要统计Temp30里面物料每月对应的销售数量
select Temp30.item,Temp16.period1,Temp16.year1 ,sum(Temp30.qty)
WHERE temp30.date_of_fill BETWEEN Temp16.date_begin AND Temp16.date_end
group by Temp30.item,Temp16.period1,Temp16.year1
按照物料 核算月,核算年统计的销售数量结果
如果没有财务核算期对应的表,那么每个月的起始或者结束日期,就要在sql里写定
可以将如上基础表建立一个临时表,输入按照指定规则插入数据即可(相当于财务核算期对应的表)追问
如果没有核算表,在我也不想建临时表的情况应该怎么做呢
MySQL中, 如何查询某一天, 某一月, 某一年的数据.
如题. 时间类型为datetime, 请给出简洁易懂的SQL语句, 并且适当给于注释.
如果对效率问题给于说明, 小弟更是感激不尽!
select * from 表 where date_format(日期,'%Y-%m')='2014-04' 月份
select * from 表 where date_format(日期,'%Y')='2014' 年
就是date_format(日期,'%Y-%m-%d') 这里的参数长短追问
日和月都没有问题, 但是年的数据出错了, 这是为什么呢?
本回答被提问者采纳 参考技术B 网上搜一下追问最烦你这种人, 不会别tm来凑热闹.
参考技术C 你前台页面是什么查询?是输入时间还是选择时间?以上是关于mysql 查询一年的数据 要按每个月20号统计 如何做 一条语句的主要内容,如果未能解决你的问题,请参考以下文章