Mysql生成连续时间段记录
生活随笔
收集整理的這篇文章主要介紹了
Mysql生成连续时间段记录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需求說明
基于某個起始日期值,比如‘2021-9-1’,生成其之后的30天數據,結果類似:
2021-09-02、2021-09-03、2021-09-04...
問題分析
該需要看似簡單,但想不借助交互式SQL即WHILE循環的方式,則得考慮借助自增輔助表來實現。自增輔助表的構造有幾種方法,詳見代碼處的介紹:
-- # Way1 借助系統表作為自增輔助 SELECT DATE_FORMAT(DATE_SUB('2021-09-01', INTERVAL -pos DAY), '%Y-%m-%d') gendate FROM(SELECT ORDINAL_POSITION pos FROM information_schema.`COLUMNS`WHERE TABLE_NAME = 'table_lock_waits_summary_by_table'AND ORDINAL_POSITION <30 )A-- # Way2 借助系統表生成自增輔助 SELECT DATE_FORMAT(DATE_SUB('2021-09-01', INTERVAL -num DAY), '%Y-%m-%d') gendate FROM( SELECT @row:=@row+1 num FROM sys.metrics a,(SELECT @row:=0) b )A WHERE A.num<30-- # Way3 借助CTE生成自增序列,mysql 8及以上版本 WITH RECURSIVE cte (num) AS (SELECT 1UNION ALLSELECT num + 1 FROM cte WHERE num < 30 ) SELECT DATE_FORMAT(DATE_SUB('2021-09-01', INTERVAL -num DAY), '%Y-%m-%d') gendate FROM cte;結果展示?
總結
以上是生活随笔為你收集整理的Mysql生成连续时间段记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 窗口分析函数19_Mysql查询窗口函数
- 下一篇: SQL 聚合函数一定要跟group by