mysql中获取一段时间日期

复制代码
SELECT
  date_add(date_sub('20230201', interval 1 day), INTERVAL (cast(help_topic_id AS signed INTEGER) + 1) day) as tttt
FROM mysql.help_topic
WHERE help_topic_id < DATEDIFF('20230201', date_sub('20230101', interval 1 day))
ORDER BY help_topic_id

其中mysql.help_topic是系统内置表,主要是为了获取从0开始的一个递增序列

解释:

date_sub(date, interval) 函数:

这个函数用于从给定日期中减去一个时间间隔。

在这个查询中,我们使用了 date_sub('20230201', interval 1 day),它减去了 '20230201' 这个日期的前一天,得到了一个新的日期。

cast(help_topic_id AS signed INTEGER) 函数:

这个函数用于将 help_topic_id 字段的值转换为有符号整数类型。

这是因为在后面的计算中需要对其进行加法操作,而加法操作要求操作数是数值类型。

INTERVAL (cast(help_topic_id AS signed INTEGER) + 1) day:

这个表达式用于计算一个时间间隔,根据 help_topic_id 的值来确定天数。

首先,cast(help_topic_id AS signed INTEGER) 将 help_topic_id 转换为有符号整数。

然后,对其进行加法操作 (cast(help_topic_id AS signed INTEGER) + 1),加 1 表示在原来的日期上增加一天。

最后,使用 INTERVAL 关键字将结果封装为一个时间间隔。

date_add(date, interval) 函数:

这个函数用于将给定日期加上一个时间间隔。

在这个查询中,我们使用了 date_add(date_sub('20230201', interval 1 day), INTERVAL (cast(help_topic_id AS signed INTEGER) + 1) day),它将前一天的日期(由 date_sub 计算得到)加上一个时间间隔(由上面的表达式计算得到),得到了一个新的日期。

FROM mysql.help_topic:

这部分指定了查询的数据源,即从 mysql.help_topic 表中获取数据。

mysql.help_topic 是 MySQL 数据库的内部表,用于存储关于帮助主题的信息。

WHERE help_topic_id < DATEDIFF('20230201', date_sub('20230101', interval 1 day)):

这个条件用于筛选满足特定条件的记录。

help_topic_id 必须小于 '20230201' 这个日期与前一天的日期之间的天数差值(由 DATEDIFF 计算得到)。

ORDER BY help_topic_id:

这个子句指定了结果集的排序方式,按照 help_topic_id 进行升序排序。

相关推荐
存在的五月雨2 小时前
Mysql 索引的一些
数据库·mysql
黄俊懿2 小时前
MySQL主从复制:从“异步“到“GTID“,数据同步的进化之路
数据库·sql·mysql·oracle·架构·dba·db
zhou周大哥3 小时前
银河麒麟安装mysql
数据库·mysql
Sherry Wangs4 小时前
MySQL 与向量数据库的核心区别:从结构化数据到语义搜索
数据库·mysql
@小柯555m4 小时前
MySql(高级操作符--高级操作符练习(2))
数据库·sql·mysql
zxrhhm4 小时前
MySQL Server层与InnoDB存储引擎的关系+两阶段提交详解
mysql
Mr_linjw4 小时前
MySQL 中监控和优化慢 SQL & 索引小知识
数据库·sql·mysql
计算机学姐4 小时前
基于微信小程序的校园失物招领管理系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·信息可视化·微信小程序·uni-app
落魄江湖行4 小时前
孤舟笔记 并发篇十一 行锁、间隙锁、临键锁傻傻分不清?MySQL InnoDB的锁其实就这三板斧
mysql·java并发·春招·孤舟笔记
zhoupenghui1685 小时前
Mysql插入数据时,怎么让自增的主键续接表当前最大ID+1
数据库·mysql·auto increment