本文来说下如何使用Mysql.help_topic生成序列 文章目录 问题由来使用实例 问题由来 有时我们在生成一些时间轴类似的数据时,要求数据库不管有没有指定天的数据,都要生成该时间节点,可用mysql.help_
本文来说下如何使用Mysql.help_topic生成序列
有时我们在生成一些时间轴类似的数据时,要求数据库不管有没有指定天的数据,都要生成该时间节点,可用mysql.help_topic来解决此类问题,通过序列和日期函数相结合来满足我们的业务需求。
help_topic本身是Mysql一个帮助解释注释表,用于解释Mysql各种专有名词,由于这张表数据ID是从0顺序增加的,方便我们用于计数,但是8.0.17版本的只有686条数据,超过这个数字,我们就需要己自定义一张表。
可以用做计数的临时表,查询的语句只会用help_topic计数,超出的部分其实都是脏数据。
使用实例
SELECTDATE( DATE_ADD( '2022-05-01', INTERVAL @s DAY ) ) AS date,'异常总条数' as e_name, @s := @s + 1 AS `index`FROMmysql.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 TWHERE TO_DAYS(TIME) = TO_DAYS(NOW())#查询本周的数据SELECT T.* FROM buz_sampling_data TWHERE YEARWEEK(TIME,1) = YEARWEEK(NOW(),1)#查询本月的数据SELECT T.* FROM buz_sampling_data TWHERE MONTH(TIME) = MONTH(NOW())#查询本年的数据SELECT T.* FROM buz_sampling_data TWHERE YEAR(TIME) = YEAR(NOW())
来源地址:https://blog.csdn.net/qq_31960623/article/details/124803535
--结束END--
本文标题: 使用mysql.help_topic生成序列
本文链接: https://lsjlt.com/news/378446.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0