mysql 时间段查询,无数据时补0

本文介绍了一种使用SQL语句批量生成时间序列的方法。通过创建包含数字的临时表,并利用这些数字作为时间增量的基础,可以生成从指定起始日期到结束日期之间的所有小时点。此方法适用于需要大量时间序列数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE TABLE num (i int);  

INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);


创建临时表(这里是0~9999)一万条根据需要修改

SELECT n1.i + n10.i*10 + n100.i*100 + n1000.i*1000 AS id FROM num n1 cross join num as n10 cross join num as n100 cross join num as n1000


利用adddate函数,将日期向上累加直到你的enddate

select adddate('2017-09-01 00:00:00',INTERVAL numlist.id HOUR) as date,0 as faultNum from (
SELECT n1.i + n10.i*10 + n100.i*100 + n1000.i*1000 AS id FROM num n1 cross join num as n10 cross join num as n100 cross join num as n1000) as numlist
where adddate('2017-09-01 00:00:00', INTERVAL numlist.id HOUR) <= '2018-09-01 00:00:00'








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值