mysql.help_topic生成序列的方法实现

 更新时间:2023年10月30日 15:49:00   作者:wh柒八九  
本文探讨了如何使用MySQL的help_topic表生成序列,并介绍了相应的SQL查询语句和实现方法,具有一定的参考价值,感兴趣的可以了解一下

本文来说下如何使用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创建表的sql语句详细总结

    mysql创建表的sql语句详细总结

    在本篇文章里小编给大家整理的是关于mysql创建表的sql语句的相关知识点,需要的朋友们可以参考下。
    2020-02-02
  • MySQL建立唯一索引实现插入重复自动更新

    MySQL建立唯一索引实现插入重复自动更新

    这篇文章给大家分享的是当向数据插入数据时,判断字段是不是存在,存在执行更新操作,如果不存在就执行插入操作的方法,有需要的朋友们可以参考借鉴。
    2016-09-09
  • MySQL gtid的具体使用

    MySQL gtid的具体使用

    本文详细介绍了MySQL的GTID的概念、格式、相关参数以及生命周期,同时还讲解了GTID的自动定位、复制监控与管理等功能,GTID是MySQL复制环境中的一种唯一标识,可以有效避免重复复制的现象,保持数据一致,文章中还列举了多个示例,感兴趣的可以了解一下
    2024-10-10
  • 如何查本地mysql的username和密码及更新密码几种方式

    如何查本地mysql的username和密码及更新密码几种方式

    这篇文章主要介绍了光宇如何查找本地MySQL数据库的用户名和密码,包括查看当前用户、列出所有用户、重置密码以及检查配置文件,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • 详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑

    详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑

    datetime和timestamp这两种类型都是用于表示年月日时分秒格式的数据,那么他们有那么区别,本文就详细的介绍一下MySQL timestamp和datetime坑,文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 如何修改WAMP中mysql默认空密码的方法

    如何修改WAMP中mysql默认空密码的方法

    WAMP安装好后,mysql密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作。
    2011-07-07
  • MySQL 5.5主从同步设置笔记分享

    MySQL 5.5主从同步设置笔记分享

    这篇文章主要介绍了MySQL 5.5主从同步设置笔记分享,需要的朋友可以参考下
    2014-05-05
  • MariaDB(MySQL)创建、删除、选择及数据类型使用详解

    MariaDB(MySQL)创建、删除、选择及数据类型使用详解

    这篇文章主要介绍了MariaDB(MySQL)创建、删除、选择及数据类型使用详解的相关资料,需要的朋友可以参考下
    2016-09-09
  • MySQL系列之七 MySQL存储引擎

    MySQL系列之七 MySQL存储引擎

    存储引擎是数据库的核心,对于mysql来说,存储引擎是以插件的形式运行的。虽然mysql支持种类繁多的存储引擎,但是常用的就那么几种。这篇文章主要给大家介绍MySQL存储引擎的相关知识,一起看看吧
    2021-07-07
  • MySQL系列多表连接查询92及99语法示例详解教程

    MySQL系列多表连接查询92及99语法示例详解教程

    这篇文章主要为大家介绍了MySQL系列多表连接查询92及99语法示例详解教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-10-10

最新评论