你可以做的是寫一個存儲過程來生成給定日期的所有小時。例如:
delimiter $$
CREATE PROCEDURE GetAllHoursInDay
(
in in_date date
)
BEGIN
SELECT convert (in_date, datetime)
UNION
SELECT in_date + interval 1 hour
UNION
SELECT in_date + interval 2 hour
UNION
SELECT in_date + interval 3 hour
UNION
SELECT in_date + interval 4 hour
UNION
SELECT in_date + interval 5 hour
UNION
SELECT in_date + interval 6 hour
UNION
SELECT in_date + interval 7 hour
UNION
SELECT in_date + interval 8 hour
UNION
SELECT in_date + interval 9 hour
UNION
SELECT in_date + interval 10 hour
UNION
SELECT in_date + interval 11 hour
UNION
SELECT in_date + interval 12 hour
UNION
SELECT in_date + interval 13 hour
UNION
SELECT in_date + interval 14 hour
UNION
SELECT in_date + interval 15 hour
UNION
SELECT in_date + interval 16 hour
UNION
SELECT in_date + interval 17 hour
UNION
SELECT in_date + interval 18 hour
UNION
SELECT in_date + interval 19 hour
UNION
SELECT in_date + interval 20 hour
UNION
SELECT in_date + interval 21 hour
UNION
SELECT in_date + interval 22 hour
UNION
SELECT in_date + interval 23 hour;
END$$
DELIMITER ;
然後,您可以稱之爲例如由:
call GetAllHoursInDay(current_date());
不,AFAIK MySQL不允許一個函數返回一個表,所以你不能有形式的東西SELECT * FROM GetAllHoursInDay。但是,您可以通過創建一個臨時表來避開這個問題,使用上述過程填充它,然後從可執行文件中執行SELECT *。
這將工作得很好。很高興幫助你。 –