Mysql生成日期(1)

方式一:MySQL8 递归公用表表达式(CTE) MySQL 查询

WITH RECURSIVE DateSequence AS (
    SELECT CAST('2024-01-01' AS DATE) AS date_val
    UNION ALL
    SELECT DATE_ADD(date_val, INTERVAL 1 DAY)
    FROM DateSequence
    WHERE DATE_ADD(date_val, INTERVAL 1 DAY) <= '2024-12-31'
)
SELECT date_val
FROM DateSequence
ORDER BY date_val

方式二:使用CROSS JOIN形成笛卡尔积,产生00到99的数字对。然后通过在给定的起始日期(2023-01-01)上加上这些组合起来的天数,产生了一系列日期。WHERE子句确保只选择1到31号的日期。最后通过ORDER BY对结果进行排序。

SELECT
    DATE_FORMAT('2023-01-01' + INTERVAL a.a + b.a DAY, '%Y-%m-%d') AS date
FROM
    (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
CROSS JOIN
    (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
WHERE
    DATE_FORMAT('2023-01-01' + INTERVAL a.a + b.a DAY, '%d') BETWEEN 1 AND 31
ORDER BY date; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值