系统运维系列之mysql部分学习整理5(代码片段)

琅晓琳 琅晓琳     2022-12-06     317

关键词:

1 应用场景
在mysql数据库中查找数据,要求是数据为日期不连续数据,输入一个日期查询日期所在周指定周几的数据和上几周对应时间段数据(一个月内)。关于此问题网上资料未曾有明确的解决方案,本篇博客整理相关解决流程。

2 解决方案

2.1 数据库查询全量数据,在业务层做相关筛选(这里不在赘述相关方法)。
2.2 数据库中直接按照要求查询相关数据。
step1 按照要求取指定周几的日期
--+0代表取输入日期当周的周一,-1代表周二...-6代表周日,依次类推
--含义为取0520这一天所在周的周一对应的日期 即2022-05-16
select date_sub('2022-05-20',INTERVAL WEEKDAY('2022-05-20') + 0 DAY) as date1;
step2 得到对应周几的日期,依次取出相隔7天的日期,连续取3次,即可大约对应4周数据
select date_sub(date1,INTERVAL + 07 DAY) as date2;
select date_sub(date1,INTERVAL + 14 DAY) as date3;
select date_sub(date1,INTERVAL + 21 DAY) as date4;
step3 按照所取日期进行数据筛选
select * from table where date in(date1,date2,date3,date4);

--相关函数解读
--函数从日期减去指定的时间间隔 注意减去2天是+2;加上2天是-2
--date_sub(date,interval 2 day)
date_sub(date,interval expr type)
select * from table where date > date_sub(date,interval 2 day) and date <= date;

--返回date的星期索引(0=星期一,1=星期二,…… 6=星期天)
--WEEKDAY(date)
WEEKDAY('2022-05-20') ---> 4
--返回date的星期索引(1=星期天,2=星期一,…… 7=星期六)
--DAYOFWEEK(date)
DAYOFWEEK('2022-05-20') ---> 6

--WEEKDAY(date)注意与excel的区别
--excel的用法
返回对应于某个日期的一周中的第几天。 默认情况下,天数是 1(星期日)到 7(星期六)范围内的整数
WEEKDAY(serial_number,[return_type])
Serial_number  必需。一个序列号,应使用DATE 函数输入日期
return_type    可选。用于确定返回值类型的数字
	1  或省略 数字 1(星期日)到 7(星期六)
	2  数字 1(星期一)到 7(星期日)
	3  数字 0(星期一)到 6(星期日)
	11 数字 1(星期一)到 7(星期日)

--常用的几个函数介绍
--获取本周一
--%w 是以数字的形式来表示周中的天数(0=星期天,1=星期一,…… 6=星期六)
SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-1 day)
--获取本周日
SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')-7 day)
--获取上周一 -1+7
SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w')+6 day)
--获取上周日 -7+7
SELECT DATE_sub(curdate(),INTERVAL date_format(curdate(),'%w') day)

系统运维系列之mysql部分学习整理1

1前言本部分对于MySQL数据库工作机制及其语法做一个整理,用于之后重点内容的查询和交流。2包含内容数据库工作机制、语法基础、重要内容整理、语句优化、效率提升等。3MySQL的字段约束3.1其中AUTO_INCREMENT必须和PRIMARYKEY一... 查看详情

系统运维系列之mysql部分学习整理4

1存储引擎查看数据库表创建命令:SHOWCREATETABLEtab1;支持的存储引擎:MylSAM:快速存储;InnoDB:带有事务回滚机制;MemorycsvArchive修改存储引擎的方式:通过修改MySQL配置文件实现default-storage-engine=engine... 查看详情

系统运维系列之mysql部分学习整理3

1存储过程语法结构:举例:无参CREATEPROCEDUREsql()SELECTVERSION();调用:CALLsql();有参IN:DELIMITER//(更改执行符号的命令)参数与语句中的字段不要重复,不要重复!如果p_id改成id,则会全部删除࿰... 查看详情

系统运维系列之linux系统下常用查找命令整理(代码片段)

1前言网上关于linux命令大多写的很细很全,但是真正使用起来需要根据自己的场景进行拼接,本博客建立在实际场景下,在实际问题中使用linux查找命令。2grep命令使用场景:查找日志中的关键词,并且限定时... 查看详情

系统运维系列之mysql联合索引的使用分析(代码片段)

1前言日常优化中可能会遇到相同的数据在本地执行很快但是在服务器上执行很慢的问题,或者无论是在本地还是在服务器上都执行的很慢,可以分为两个方面排查2第一部分本地执行速度>服务器执行速度一般这种情况... 查看详情

系统运维系列之clickhouse数据库学习集锦(增删改查操作)(代码片段)

1简介本篇内容涉及一些增删改查操作,包括数据库、表,重点介绍字段的增加/删除操作,其中包含的内容均实际测试通过。2Clickhouseclickhouse是一款MPP架构的列式存储数据库,它拥有完备的管理功能,所以它称... 查看详情

系统运维系列之clickhouse数据类型整理

Clickhouse支持的数据类型在system.data_type_families表中检查数据类型名称以及是否区分大小写,这个表中存储了ClickHouse支持的所有数据类型。select*fromsystem.data_type_familieslimit10;Int说明ClickHouse中整形分为Int8、Int16、Int32、Int64来表示... 查看详情

系统运维系列之greenplumvacuum清理删除数据命令(代码片段)

...m完成清理工作后,那些空间并没有真正被释放给操作系统,只能被vacuum清理过的表和索引所利用 查看详情

系统运维系列之堆栈理解(java应用)(代码片段)

1概述java虚拟机内存分为:堆(heap)、栈(stack)、方法区(methodarea)等,整体来说:堆:new出来的数组或者对象;栈:存储局部变量;方法区:代码区;寄存器࿱ 查看详情

系统运维系列之ip地址和子网划分介绍(代码片段)

1简介接上一篇博客:关于A类,B类,C类IP地址的网段和主机数的计算方法2详细内容(1)子网掩码IP地址是以网络号和主机号来标示网络上的主机的,我们把网络号相同的主机称之为本地网络,网络号不相同的主... 查看详情

系统运维系列之kafka手动设置offset(经典方法总结)(代码片段)

1问题背景在使用Kafka消费数据过程中,消费程序可能出现运行问题,导致消费不及时,消息堆积很多;尤其是消息消费后需要进行一列后处理,这种情况下就需要考虑一些方法来进行消费参数的设置。2举例测... 查看详情

系统运维系列之记载一次windows系统下tomcat启动报错的问题(代码片段)

1问题简介最近遇到一个问题,在windows系统下部署tomcat项目,cmd命令启动时频繁报错,比如Unsupportedmajor.minorversion52.0,且cmd界面上打印出来的日志为乱码;最后在关闭tomcat时发现关不掉,出现项目挂起但是... 查看详情

自动化运维系列之ansible的简介与安装持续更新···(代码片段)

自动化运维系列之Ansible的简介与安装自动化运维工具简介由于互联网的快速发展导致产品更新换代的速度逐渐加快,这就导致运维人员的日常工作会大大增加,如果还是按照传统方式进行维护工作会使工作效率低下。此时,就... 查看详情

自动化运维系列之ansible命令应用基础(模块的应用)持续更新中···(代码片段)

自动化运维系列之Ansible命令应用基础(模块的应用)模块简介Ansible可以使用命令行方式进行自动化管理,基本语法如下:ansible<host-pattern>[-mmodule_name][-aargs]<host-pattern>对哪些主机生效[-mmodule_name]需要使用的模块[-aargs]模块... 查看详情

系统运维系列之csv文件读取时内容中包含逗号的处理方法(代码片段)

问题描述:CSV文件默认逗号分隔,但是如果在内容中包含逗号,则会导致分隔失败或者数组下标匹配越界的问题。处理方法:(1)正则表达式//(?=pattern)//非获取匹配,正向肯定预查,在任何匹配... 查看详情

系统运维系列之csv文件读取时内容中包含逗号的处理方法(代码片段)

问题描述:CSV文件默认逗号分隔,但是如果在内容中包含逗号,则会导致分隔失败或者数组下标匹配越界的问题。处理方法:(1)正则表达式//(?=pattern)//非获取匹配,正向肯定预查,在任何匹配... 查看详情

系统运维系列之kafka查询不到正在消费的的消费组信息(代码片段)

1问题背景【怪怪怪】目前消费者组正常消费,但是通过kafkamanager监测不到consumer组的消费信息;前期出现的问题是一台Kafka的服务器down掉,连接不上集群,是不是和这个现象有关系呢?2排查思路【期待解决】2... 查看详情

系统运维系列之list实现深拷贝(java应用)

浅拷贝调用方法:遍历循环复制:List<String>destList=newArrayList<String>(srcList.size());for(Stringp:srcList)destList.add(p);使用list.addAll()方法:List<String>destList=newAr 查看详情