今天工作过程中,遇到了一个需要生成一个日期序列作为主表的需求。 方法一 以前的做法是通过借助于辅助表来实现,意思是说,生成一个整数序列1~N(N至少要大于所需序列的最大长度),并在数据库中创建这个表。
今天工作过程中,遇到了一个需要生成一个日期序列作为主表的需求。
方法一
以前的做法是通过借助于辅助表来实现,意思是说,生成一个整数序列1~N(N至少要大于所需序列的最大长度),并在数据库中创建这个表。然后结合DATE_ADD函数来实现就行。步骤如下:
SELECT DATE_ADD('2023-02-05', INTERVAL INT_FIELD DAY)FROM T_INT WHERE DATE_ADD('2023-02-05', INTERVAL INT_FIELD DAY)<='2023-03-02'
这样,我们就获得了从2023年2月5日到2023年3月2日的一个时间序列。
方法二
今天刚刚学习了一种新的方式,借助于Mysql8的递归函数,不用建立物理表就可以实现。SQL如下
WITH RECURSIVE DATE_LIST (DATES) AS ( SELECT DATE('2023-02-05') AS DATES UNION ALL SELECT DATE_ADD(DATES, INTERVAL 1 DAY) FROM DATE_LIST WHERE DATE_ADD(DATES, INTERVAL 1 DAY) < '2023-03-02' ) SELECT DATES FROM DATE_LIST
在RECURSIVE定义的递归下,UNioN ALL前面的部分相当于初始化递归函数。UNIONALL后面的部分实现递归调用,直到达到WHERE后的终止条件。
来源地址:https://blog.csdn.net/hpuexplorer/article/details/130250734
--结束END--
本文标题: MYSQL生成日期列表
本文链接: https://lsjlt.com/news/396178.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