gpt4 book ai didi

mysql - 在mysql查询结果中添加迄今为止的小时数

转载 作者:行者123 更新时间:2023-11-29 10:39:07 25 4
gpt4 key购买 nike

我有一个返回日期的查询,让我们使用 current_date 作为示例:

SELECT
current_date();

我想修改此查询以返回类似以下内容的内容:

Date         |  Hour
2017-08-24 0
2017-08-24 1
2017-08-24 2
2017-08-24 3
2017-08-24 4
...

一直到 23。我需要这个,因为我每天都会有不同的日期,并且我试图避免创建包含所有日期和时间的表格。

最佳答案

您可以做的是编写一个存储过程来生成给定日期的所有小时数。例如:

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());

并不是说 MySQL 不允许 FUNCTION 返回表,因此您不能使用 SELECT * FROM GetAllHoursInDay 形式的内容。但是,您可以通过创建一个临时表,使用上述过程填充它,然后执行 SELECT * from temptable 来规避此问题。

关于mysql - 在mysql查询结果中添加迄今为止的小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45863858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com