一、js获取指定月份的最后一天
使用new Date(year,month,0)的方式:https://www.cnblogs.com/javascript9527/p/12957193.html
//获取当前日期 var now = new Date(); var nowYear = now.getFullYear();//当前年 var nowMonth = now.getMonth()+1; //当前月 var nowDay = now.getDay();//当天 //获取指定年份和月份的该月的最后一天 var lastDay= new Date(nowYear,nowMonth,0).getDate();
二、使用POI导出excel
使用HSSF方式可以用纯java代码来读取、写入、修改excel文件,参考如下:
java导出excel详解:https://blog.csdn.net/w893932747/article/details/89354979
java导出excel案例:https://www.cnblogs.com/minixiong/p/11149281.html
springmvc生成excel:https://blog.csdn.net/yudiandemingzi/article/details/80204794
三、java保留两位小数
double d = 111231.5585; String.format("%.2f", d);
java保留两位小数的方法:https://www.cnblogs.com/Renyi-Fan/p/7643764.html
四、数据库知识
(1)数据排序
mysql使用order by不起作用:原因是order by是varchar类型的,在字段后面加上"+0"可转换为int类型。
参考:https://blog.csdn.net/mastertojava/article/details/86075901
mysql中查询数据自定义排序:
mysql中in和order by连用自定义排序 select * from tablename where fieldname in('',,,) order by field(fieldname,'',,,) 查询某个表按照自定义排序 select * from tablename order by field(fieldname,'',,,)
(2)触发器知识:https://blog.csdn.net/xmzhaoym/article/details/3539410
(3)数据关联同时删除多张表
数据表关联删除案例: DELETE project_basic_info,project_invest_info from project_basic_info left join project_invest_info on project_basic_info.project_basic_info_id = project_invest_info.project_basic_info_id where project_invest_info.tr1_year ="2018"
关联删除参考:
https://blog.csdn.net/yun__yang/article/details/53485760?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
https://blog.csdn.net/iteye_9841/article/details/81972477?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.nonecase
(4)使用group by之后取每组的最后一条数据
取分组的最新一条数据:https://blog.csdn.net/HXNLYW/article/details/102681680
思路:查询的表中先进行排序,但是字符串排序需要加limit,时间类型排序不需要加limit;使用max函数进行查找。
使用limit查询数据表中所有的数据:https://www.inbeijing.org/archives/1524
五、kettle同步数据表
kettle数据更新课程:https://edu.csdn.net/course/play/22044/262426
(1)增量更新(没有删除):https://www.jianshu.com/p/720529e627c0。如果要实现删除,可以在开始添加一个执行sql脚本,删除目标表数据
(2)同步更新(增删改查):进行差异化比对,进行同步,提高速度
(3)表输入表输出,重新拷贝一份,进行插入
(4)定时任务设置:新建作业,连接转换,发送邮件。发送邮件设置:https://blog.csdn.net/harry5508/article/details/96484235
kettle使用教程之数据同步:https://www.cnblogs.com/ywjfx/p/10815102.html
kettle做数据同步总结:
要求:在数据同步之前先判断data_flag表的状态,如果有状态是A的数据,然后就执行数据更新,数据更新完成之后改变data_flag表为P
思路:在每个数据表同步之前先做判断,使用switch,由于是根据值去不同的分支,本例中分为两类,有数据,无数据,因此需要在每个转换之前都做判断,如果没有数据为A的,那么就选择空操作,什么也不做,如果有数据为A的,就到数据同步的转换,因为数据同步有原表和目标表两个分支,switch没法同步执行,所以就直接链接到转换,最后把所有需要同步的表都进行串联,最后再进行数据表更新操作,也就是需要一个表一个表同步,否则一个执行完成之后直接修改状态其他表就不再更新,数据更新也做成转换的形式,里面放执行SQL脚本操作,这样当所有的表都进行更新完成之后就会修改表的状态,最后成功。
如果kettle的switch所有的分支都执行,那么需要把switch的分支替换成trans,即把要执行的内容封装到trans中,然后在switch中调用。kettle的内部运行机制:如果sql没有任何参数,不管放到流程的哪个步骤,都是最先执行的。
参考:https://wenwen.sogou.com/z/q860012672.htm