mysql.help_topic生成序列的方法实现
本文来说下如何使用mysql.help_topic生成序列
问题由来
有时我们在生成一些时间轴类似的数据时,要求数据库不管有没有指定天的数据,都要生成该时间节点,可用mysql.help_topic来解决此类问题,通过序列和日期函数相结合来满足我们的业务需求。

help_topic本身是Mysql一个帮助解释注释表,用于解释Mysql各种专有名词,由于这张表数据ID是从0顺序增加的,方便我们用于计数,但是8.0.17版本的只有686条数据,超过这个数字,我们就需要己自定义一张表。
可以用做计数的临时表,查询的语句只会用help_topic计数,超出的部分其实都是脏数据。
使用实例
SELECT
DATE( DATE_ADD( '2022-05-01', INTERVAL @s DAY ) ) AS date,
'异常总条数' as e_name,
@s := @s + 1 AS `index`
FROM
mysql.help_topic,
( SELECT @s := 0 ) temp
WHERE
@s <= DATEDIFF('2022-05-31','2022-05-01')
实例结果

本周,本月,本季度,本年的第一天和最后一天
#查询本周第一天 SELECT DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) DAY) AS TIME #查询本周的最后一天 SELECT DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE())-6 DAY) AS TIME #查询本月的第一天 SELECT DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY) AS TIME #查询本月的最后一天 SELECT LAST_DAY(CURDATE()) AS TIME #当前quarter的第一天: select concat(date_format(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-3 month),'%Y-%m-'),'01'); #当前quarter的最后一天: select LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM CURDATE()),1) + interval QUARTER(CURDATE())*3-1 month); #当年第一天: SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY); #当年最后一天: SELECT concat(YEAR(now()),'-12-31');
新增一个星期,一个月,一个季度,一年
#新增一个星期 SELECT DATE_ADD(now(), INTERVAL 1 week) time #新增一个月 SELECT DATE_ADD(now(), INTERVAL 1 month) time #新增一个季度 SELECT DATE_ADD(now(), INTERVAL 1 quarter) time #新增一年 SELECT DATE_ADD(now(), INTERVAL 1 year) time
查询本日,本周,本月,本年的数据
#查询本日的数据 SELECT T.* FROM buz_sampling_data T WHERE TO_DAYS(TIME) = TO_DAYS(NOW()) #查询本周的数据 SELECT T.* FROM buz_sampling_data T WHERE YEARWEEK(TIME,1) = YEARWEEK(NOW(),1) #查询本月的数据 SELECT T.* FROM buz_sampling_data T WHERE MONTH(TIME) = MONTH(NOW()) #查询本年的数据 SELECT T.* FROM buz_sampling_data T WHERE YEAR(TIME) = YEAR(NOW())
到此这篇关于mysql.help_topic生成序列的方法实现的文章就介绍到这了,更多相关mysql.help_topic生成序列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
如何查本地mysql的username和密码及更新密码几种方式
这篇文章主要介绍了光宇如何查找本地MySQL数据库的用户名和密码,包括查看当前用户、列出所有用户、重置密码以及检查配置文件,文中通过代码介绍的非常详细,需要的朋友可以参考下2024-11-11
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
datetime和timestamp这两种类型都是用于表示年月日时分秒格式的数据,那么他们有那么区别,本文就详细的介绍一下MySQL timestamp和datetime坑,文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下2021-12-12
MariaDB(MySQL)创建、删除、选择及数据类型使用详解
这篇文章主要介绍了MariaDB(MySQL)创建、删除、选择及数据类型使用详解的相关资料,需要的朋友可以参考下2016-09-09


最新评论