这只是稍微小一点:
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;
但是!!,如果可以使用MariaDB,则可以使用序列引擎并按以下方式进行操作:
SELECT '2016-01-22 00:00:00' + INTERVAL seq HOUR as mydate from seq_0_to_23;
mydate
2016-01-22 00:00:00
2016-01-22 01:00:00
2016-01-22 02:00:00
2016-01-22 03:00:00
2016-01-22 04:00:00
2016-01-22 05:00:00
2016-01-22 06:00:00
2016-01-22 07:00:00
2016-01-22 08:00:00
2016-01-22 09:00:00
2016-01-22 10:00:00
2016-01-22 11:00:00
2016-01-22 12:00:00
2016-01-22 13:00:00
2016-01-22 14:00:00
2016-01-22 15:00:00
2016-01-22 16:00:00
2016-01-22 17:00:00
2016-01-22 18:00:00
2016-01-22 19:00:00
2016-01-22 20:00:00
2016-01-22 21:00:00
2016-01-22 22:00:00
2016-01-22 23:00:00