-
2021-02-25 18:17:58
用Java获取最近12个月的名称,以具有12个元素的数组的形式返回:
/**
* 获取最近12个月,经常用于统计图表的X轴
*/
public static String[] getLast12Months(){
String[] last12Months = new String[12];
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); //要先+1,才能把本月的算进去
for(int i=0; i<12; i++){
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1); //逐次往前推1个月
last12Months[11-i] = cal.get(Calendar.YEAR)+ "-" + fillZero((cal.get(Calendar.MONTH)+1), 2);
}
return last12Months;
}
其中,fillZero()方法只是对格式的处理,对计算过程没有实质影响。
结果是如下形式:
['2013-05', '2013-06', '2013-07', '2013-08', ...]
更多相关内容 -
Java获取最近12个月 (修改完善版)
2015-12-29 19:55:54用Java获取最近12个月的名称,以具有12个元素的数组的形式返回,源查找不可用(3月份重复),现自己修改了一下,缺分啊,1分请见谅 -
记录mysql查询过去十二个月中每个月的数据情况(含本月)
2019-03-01 14:34:43思路:创建视图,查询过去的12个月;当然,也可以使用存储过程遍历的把12个月插入到一个临时表中。 一、以视图的形式实现 1.1创建过去十二个月的视图SQL 可直接copy执行 CREATE ALGORITHM = UNDEFINED ...思路:创建视图,查询过去的12个月;当然,也可以使用存储过程遍历的把12个月插入到一个临时表中。
一、以视图的形式实现
1.1创建过去十二个月的视图SQL
可直接copy执行
CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW `year_month_view` AS SELECT DATE_FORMAT(CURDATE(), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 2 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 3 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 4 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 5 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 6 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 7 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 8 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 9 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 10 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 11 MONTH), '%Y-%m') AS `year_month`
关于sql中用到的视图语法说明及视图说明链接:
a、ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。
如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。
对于MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
对于TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。
对于UNDEFINED,MySQL自己选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,
这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。
b、DEFINER 表示按定义者拥有的权限来执行(指定视图创建者)
INVOKER 表示用调用者的权限来执行。默认情况下,系统指定为DEFINER
c、SQL SECURITY DEFINER:指定视图查询数据时的安全验证方式;
语法一
DATE_FORMAT(date,format) date 参数是合法的日期。format 规定日期/时间的输出格式。
语法二
CURDATE()函数返回当前的日期。
INTERVAL
详情链接:
效果如图:创建完成查看视图sql
select ym.year_month from year_month_view ym group by ym.year_month;
1.2 关联查询数据sql
SELECT ymv.year_month yearMonth, ifnull(pi.totalPay, 0) totalPay FROM year_month_view ymv LEFT JOIN ( SELECT DATE_FORMAT(pi.in_Issu_time, '%Y-%m') yearMonth, SUM(pi.total_Tax_included_Am) totalPay FROM pj_invoice pi WHERE DATE_FORMAT(pi.in_Issu_time, '%Y-%m') > DATE_FORMAT( date_sub(curdate(), INTERVAL 12 MONTH), '%Y-%m' ) GROUP BY yearMonth ) pi ON ymv.year_month = pi.yearMonth GROUP BY ymv.year_month
说明:sql对应in_Issu_time是我业务表中对应的某个时间,具体业务是查询过去一年中每个月的数据的总额。
pj对应的要查询的数据业务表、year_month_view视图、total_Tax_included_Am每条记录的总额度、计算出的总额totalPay
DATE_SUB(d,INTERVAL expr type)函数返回起始日期d减去一个时间段后的日期。
expr是一个表达式,用来指定从起始日期添加或减去的时间间隔值。
expr是一个字符串。对于负值的时间间隔,它可以用一个负号“-”开头。
expr表达式与后面的间隔类型type对应。
MySQL中的日期间隔类型如下表所示:
二、利用存储过程的方式实现(后续补充)
-
MySQL统计过去12个月的数据(包括本月)
2021-03-04 04:16:141、问题需要统计过去12个月的原始数据表如下图,数据是按分钟存储的。也就是说要统计每个月一共有多少条body_infared大于0的数据。2、处理过程2.1 获取12个月到现在的数据select * from device_data t where DATE_...1、问题
需要统计过去12个月的
原始数据表如下图,数据是按分钟存储的。也就是说要统计每个月一共有多少条body_infared大于0的数据。
2、处理过程
2.1 获取12个月到现在的数据
select * from device_data t where DATE_FORMAT(t.time,'%Y-%m')> DATE_FORMAT(date_sub(curdate(), interval 12 month),'%Y-%m');
2.2 统计某台设备在过去12个月中每个月body_infared大于0的数据之和。
select DATE_FORMAT(t.time,'%Y-%m') month,count(t.id) minute from device_data t where t.body_infrared>0 and t.device_id=13 AND DATE_FORMAT(time,'%Y-%m')> DATE_FORMAT(date_sub(curdate(), interval 12 month),'%Y-%m') group by device_id,month
获取结果:
-
MySQL 统计过去12个月的数据(包括本月),mysql本月
2021-01-20 19:53:26而这12个月中,如果这个月没有数据的,则统计为0。原始数据表如下图,数据是按分钟存储的。也就是说要统计每个月一共有多少条body_infared大于0的数据。2、处理过程2.1 获取12个月到现在的数据select ...MySQL 统计过去12个月的数据(包括本月),mysql本月
1、问题
需要统计过去12个月的数据,如现在是2015年4月,那么我们需要统计从2014年5月到2015年4月的数据情况。而这12个月中,如果这个月没有数据的,则统计为0。
原始数据表如下图,数据是按分钟存储的。也就是说要统计每个月一共有多少条body_infared大于0的数据。
2、处理过程
2.1 获取12个月到现在的数据
select * from device_data t where
DATE_FORMAT(t.time,'%Y-%m')>
DATE_FORMAT(date_sub(curdate(), interval 12 month),'%Y-%m');
2.2 统计某台设备在过去12个月中每个月body_infared大于0的数据之和。
select DATE_FORMAT(t.time,'%Y-%m') month,count(t.id) minute from device_data t
where t.body_infrared>0 and t.device_id=13
AND DATE_FORMAT(time,'%Y-%m')>
DATE_FORMAT(date_sub(curdate(), interval 12 month),'%Y-%m')
group by device_id,month
获取结果:
这时候我们发现,原始数据中只有三个月的数据,还有其它9个月按要求应该是显示为0的。
2.3 用一个笨点的方法获取过去12个月所有的月份。
创建一个查找过去12个月的视图,当然这里你也可以使用存储过程遍历地把12个月插入到一个临时表中,代码会更优雅一点。
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`%`
SQL SECURITY DEFINER
VIEW `past_12_month_view` AS
SELECT DATE_FORMAT(CURDATE(), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 2 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 3 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 4 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 5 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 6 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 7 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 8 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 9 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 10 MONTH), '%Y-%m') AS `month`
UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 11 MONTH), '%Y-%m') AS `month`
查看12个月的显示情况:
select t.month from past_12_month_view t group by t.month;
2.4 把2.3的12个月的显示数据与 2.2查询结果关联查询
select v.month,ifnull(b.minute,0) minute from past_12_month_view v
left join
(select DATE_FORMAT(t.time,'%Y-%m') month,count(t.id) minute
from device_data t where
DATE_FORMAT(t.time,'%Y-%m')>
DATE_FORMAT(date_sub(curdate(), interval 12 month),'%Y-%m')
and t.device_id=(select d.id from device d where d.serial='01150100004')
group by t.device_id,month)b
on v.month = b.month group by v.month
最后得到我们想要的结果:
http://www.dengb.com/sjkqy/989252.htmlwww.dengb.comtruehttp://www.dengb.com/sjkqy/989252.htmlTechArticleMySQL 统计过去12个月的数据(包括本月),mysql本月 1、问题 需要统计过去12个月的数据,如现在是2015年4月,那么我们需要统计从2014年5月到...
-
MySQL查询近12个月数据,无则补0
2019-10-24 19:12:46查询近12个月数据,无则补0 select v.month,ifnull(b.count,0) count from ( SELECT DATE_FORMAT(CURDATE(), '%Y-%m') AS `month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y-%m') AS `... -
MySQL 统计过去12个月每个月的数据信息
2020-10-24 18:54:141、问题 当前项目中含有一个...和group by根据订单的创建时间,对订单进行分组,并计算某一个出发地12个月的订单数量 SQL语句 select count(or_id) as count from t_order WHERE origin='郑州工商学院' group b -
取所选当前时间前十二个月的数据
2018-04-08 14:01:00根据用户选定的时间点(年、月)、取该时间前十二个月的数据显示。思路:①获取用户选定的时间、传入后台、计算好时间段、放入数据库搜索条件、获得数据。②后台直接获取到该时间段内(年)、取两年时间的数据、前台... -
Python计算近12个每个月的天数
2019-08-02 17:06:26# -*- coding:utf-8 -*- __author__ = 'yangxin_ryan' import calendar import datetime class TimeFunc(object): def time_12_month(self): """ 计算近12个月的天数 :return: """ ... -
MySQL查询统计今年12个月的数据,没有默认为空
2020-10-24 18:25:06做报表统计的时候,常常需要在MySQL端用sql统计近12个月的数据,或者近30天的数据。 假如遇到当月没有数据,或者当天没有数据时,默认为0。 SELECT CASE WHEN length(mon)= 1 THEN concat(LEFT(CURRENT_DATE, 5),'0... -
mysql+ mybatis查询最近十二个月的数据
2019-01-19 17:32:51select count(*) as 'number',left(createtime,7) as 'month' from t_hotel where DATE_FORMAT(createtime,'%Y-%m'... DATE_FORMAT(date_sub(curdate(), interval 12 month),'%Y-%m') group by month; 说明: ... -
MySQL 统计过去12个月的数据包括本月(没有数据则填充0)
2020-09-30 18:12:44而这12个月中,如果这个月没有数据的,则统计为0。 原始数据表如下图,数据是按分钟存储的。也就是说要统计每个月一共有多少条body_infared大于0的数据。 2、处理过程 2.1 获取12个月到现在的数据 select * ... -
hive_通过yyyymm格式的变量,获取前12个月以及每月最后一天的日期变量
2020-05-20 18:12:23通过yyyymm格式的变量,获取前12个月以及每月最后一天的日期变量 --获得12个月的维表(每月+每月最后一天) drop table temp_dual1; create table temp_dual1 (id string); insert into temp_dual1 values(${month_... -
一年中有12个月,每个月的天数是不一样的,其中有7个月为31天称为大月,分别为1,3,5,7,8,10,12月, 有4个月...
2020-04-07 18:20:33一年中有12个月,每个月的天数是不一样的,其中有7个月为31天称为大月,分别为1,3,5,7,8,10,12月, 有4个月为30天,称为小月,分别为4,6,9,11月,还有二月较特殊,平年的二月有28天,而润年的二月有29天,请输入年份和... -
vue+elementUi日期控件控制开始时间和结束时间以及范围在12个月之内
2020-09-02 16:54:44作为一个后端人员,写...开始日期不超过结束日期的前12个月 结束日期在开始日期之后 上代码啦 <el-form-item label="开始日期"> <el-date-picker v-model="dateRange[0]" size="mini" format="yyyy-M -
mysql统计一年12个月的数据,当某个月没数据的时候自动补0
2019-08-22 17:19:34在mysql中如何去统计12个月的数据,并且给没有数据的月份设置为0 ? 因为每个人的业务都不太一样,所以如何统计数据这个就不说了,不过我相信能看到这篇文章的人应该都已经做好数据统计,只是统计的数据并不是完整... -
MySQL统计过去12个月的数据没有则为0
2015-12-18 09:25:32MySQL统计过去12个月的数据没有则为0 -
sql(MySql)实现过去12个月的统计栏目表
2018-07-05 13:23:22问题: 需要往echarts中填充过去12个月的数据,直接SELECT DATE_FORMAT(log_t.dtime,'%Y-%m') as cale,COUNT(*) FROM log_t WHERE log_t.dtime BETWEEN DATE_SUB( CURRENT_DATE, INTERVAL 1 YEAR ) AND CURRENT_... -
SqlServer 行转列(统计某年一到十二个月数据总和)
2019-09-26 05:48:35sum(case MONTH(purchase_date) when '12' then SumMoney else 0 end) as December from Purchase) td unpivot (moneys for months in (January,February,March,April,May,June,July,August,September,... -
MySQL 统计过去12个月的数据(包括本月)
2015-04-24 09:06:31而这12个月中,如果这个月没有数据的,则统计为0。 原始数据表如下图,数据是按分钟存储的。也就是说要统计每个月一共有多少条body_infared大于0的数据。 2、处理过程 2.1 获取12个月到现在的数据 select ... -
下拉选为12个月 默认选择当前月 HTML+JS实现方式
2017-06-08 16:17:12select class="edline" id="month"> option value="0">请选择月份option> option value="1">1月option> ... option value="2">2月option> ... option value="3">3月... option value="4">4月option> -
oracle 查询一年12个月的sql,获取今年在内的前几年、后几年
2019-12-31 11:09:05-- 一年12月的sql select to_char(sysdate, 'yyyy-') || lpad(level, 2, 0) datevalue from dual connect by level < 13; /* --结果 DATEVALUE 2020-01 2020-02 2020-03 2020-04 2020-05 2020-06 2020-07 2020-... -
Java使用Calendar遍历指定年份的十二个月、指定月份的每一天、指定日期的24小时
2020-08-06 14:43:25文章目录一、Calendar遍历指定年份的十二个月二、Calendar遍历指定月份的每一天三、Calendar遍历指定日期的24小时 一、Calendar遍历指定年份的十二个月 Calendar c = Calendar.getInstance(); // 获取当前的年份 int... -
为什么计算机起始时间是1970年1月1日
2018-08-09 13:57:581969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。随后,汤普逊和同事丹尼斯里奇改进了B语言... -
Python-生成包含某年12个月天数的字典
2019-03-10 21:18:55生成一个包含一年中12个月,每个月天数的字典,调用判断闰年的函数 思路: 1、先用推导字典生成一个含12个月的字典 2、依次判断每个月的天数,对字典values值进行赋值 def leap_year(year): #判断是否闰年,输入参数... -
判断两个日期的跨度是否超过一年(12个月)
2021-03-16 14:31:57判断两个日期的跨度是否超过一年写这个工具类是因为在处理查询业务的时候遇到了一个问题,要求是查询的时间范围不能超过十二个月,自己找了一下没有比较简单的实现方法,就自己理了一下思路自己写了这个工具类。... -
JS获取当前月份前12个月的月份数组
2018-01-29 10:36:23// 获取当前月份的前12个月的月份数组 function getLastYearMonthArray() { var d = new Date(); var result = []; // d.setMonth(d.getMonth() + 1); for (var i = 0; i var dd = d.getMonth() ... -
Excel计算1-12月的销售累计额
2021-01-30 11:47:56销售情况见下表,要求计算1月累计销售额,2月累计销售额…… 输入公式**=sum(B$2:B2)** 其他的使用填充,计算结果如下: