gpt4 book ai didi

MySQL 查询显示下个月内的所有小时

转载 作者:行者123 更新时间:2023-11-29 09:00:14 25 4
gpt4 key购买 nike

我如何组合一个查询来显示下周的所有时间,因为我想将时间表与此进行比较以用于预约目的。

感谢您的帮助!

编辑--

预期结果在 9 到 5 之间就很好

|客户日期 | client_time |
2010年10月1日 09:00:00
2010年10月1日 10:00:00
2010年10月1日 11:00:00
2010年10月1日 12:00:00
2010年10月1日 13:00:00
2010年10月1日 14:00:00
2010年10月1日 15:00:00
2010年10月1日 16:00:00
2010年10月1日 17:00:00

最佳答案

您需要创建一个表来存储日期和时间值。

CREATE TABLE calendarhours (caldaytime DATETIME);    

然后,您需要创建一个存储过程来循环这两个日期,并将时间表时间的日期时间值插入表中。

DELIMITER $$    

CREATE DEFINER=`root`@`localhost` PROCEDURE `timesheetdays`(startdate DATETIME, enddate DATETIME)
BEGIN
DECLARE tempdate DATETIME;


DELETE FROM `calendarhours`;

-- set the temp date to 9am of the start date
SET tempdate = DATE_ADD(DATE(startdate), INTERVAL '0 9' DAY_HOUR);

-- while the temp date is less than or equal to the end date, insert the date
-- into the temp table
WHILE ( tempdate <= enddate ) DO
BEGIN
-- insert temp date into temp table
INSERT INTO `calendarhours` (caldaytime) VALUES (tempdate);
-- increment temp date by an hour
SET tempdate = DATE_ADD(tempdate, INTERVAL '0 1' DAY_HOUR);

-- if the temp date is greater than 5 PM (17:00) then increment to the next day
IF TIMEDIFF(tempdate, DATE_ADD(DATE(tempdate), INTERVAL '0 17' DAY_HOUR)) > 0 THEN
BEGIN
-- increment to the next day
SET tempdate = DATE_ADD(DATE(tempdate), INTERVAL '1 9' DAY_HOUR);
-- for business purposes, if the day is a Saturday or a Sunday increment
-- until we reach Monday
WHILE ( DAYNAME(tempdate) = 'Saturday' OR DAYNAME(tempdate) = 'Sunday' ) DO
BEGIN
SET tempdate = DATE_ADD(DATE(tempdate), INTERVAL '1 9' DAY_HOUR);
END;
END WHILE;
END;
END IF;
END;
END WHILE;

-- return all the inserted date and times
SELECT * FROM calendarhours ORDER BY caldaytime;

END

此过程将循环遍历两个日期,从每天上午 9 点开始,到每天下午 5 点 (17:00) 结束。当时间到达 18:00 时,该过程将递增到第二天,并在上午 9 点再次开始。

如果您正在制作标准工作周时间表,那么如果该天等于星期六或星期日,它将递增,直到到达星期一。

为了测试这一点,我使用了以下语句:

CALL `timesheetdays`(NOW(), DATE_ADD(DATE(NOW()), INTERVAL '5 0' DAY_HOUR));    
SELECT * FROM `calendarhours`;

这会测试从今天到今天后 5 天的程序,并根据需要显示时间。第一个语句将记录添加到表中,然后返回记录,第二个语句从表中返回记录。

关于MySQL 查询显示下个月内的所有小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859611/

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