MySQL一天中每小时一行
我试图为一天中的每一小时获取一行,我打算将某些数据加入其中 到目前为止,我只找到了这个解决方案,但我很确定这是一种更简单的方法MySQL一天中每小时一行,mysql,Mysql,我试图为一天中的每一小时获取一行,我打算将某些数据加入其中 到目前为止,我只找到了这个解决方案,但我很确定这是一种更简单的方法 SElECT addtime('2016-01-22 00:00:00', t0.i) myHour FROM ( SELECT '00:00:00' i UNION SELECT '01:00:00' UNION SELECT '02:00:00' UNION SELECT '03:00:00' UNION SELECT '04
SElECT addtime('2016-01-22 00:00:00', t0.i) myHour
FROM (
SELECT '00:00:00' i
UNION SELECT '01:00:00'
UNION SELECT '02:00:00'
UNION SELECT '03:00:00'
UNION SELECT '04:00:00'
UNION SELECT '05:00:00'
UNION SELECT '06:00:00'
UNION SELECT '07:00:00'
UNION SELECT '08:00:00'
UNION SELECT '09:00:00'
UNION SELECT '10:00:00'
UNION SELECT '11:00:00'
UNION SELECT '12:00:00'
UNION SELECT '13:00:00'
UNION SELECT '14:00:00'
UNION SELECT '15:00:00'
UNION SELECT '16:00:00'
UNION SELECT '17:00:00'
UNION SELECT '18:00:00'
UNION SELECT '19:00:00'
UNION SELECT '20:00:00'
UNION SELECT '21:00:00'
UNION SELECT '22:00:00'
UNION SELECT '23:00:00'
) t0
这只是一个小问题:
SELECT '2016-01-22 00:00:00' + INTERVAL (d0*10+d1) hour AS mydate
FROM (
SELECT 0 AS d0 UNION SELECT 1 UNION SELECT 2
) AS t1
cross JOIN (
SELECT 0 AS d1 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION
SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) AS t2
WHERE (d0*10+d1) < 24
order by d0,d1;
这是我不久前学到的一个技巧,唯一的缺点是你应该引用一个超过24行的表,这应该很容易,因为你无论如何都想在连接中使用它
select
addtime('2016-01-22 00:00:00', concat( @ num: =@ num + 1, ':00:00')) date
from
table,
(
select
@ num: =- 1
)
num limit 24
这是一个很好的解决方案。(或者您可以为这些值构建一个表并加入其中)感谢您提供了MariaDB代码段。很好用!这也可以用于为两个日期之间的每一天创建一行吗?如下所示:选择“2016-01-22 00:00:00”+间隔seq day作为mydate,从seq_0_到_9999,其中DATEDIFF('2016-02-22','2016-01-22')>=seq;
select
addtime('2016-01-22 00:00:00', concat( @ num: =@ num + 1, ':00:00')) date
from
table,
(
select
@ num: =- 1
)
num limit 24