使用mysql存储过程实现 需求 班次时间 7点-19点 19点-7点 实现从每天早上7点开始计数,到下午19点从0开始 查询一张表使用时间函数tCreateDate BETWEEN 开始时间 AND 结束时间
时间: 2024-04-11 21:28:29 浏览: 93
你可以使用MySQL存储过程来实现这个需求。以下是一个示例:
```sql
DELIMITER //
CREATE PROCEDURE calculate_count()
BEGIN
DECLARE current_time TIME;
DECLARE start_time TIME;
DECLARE end_time TIME;
DECLARE current_count INT;
SET current_time = CURTIME();
SET start_time = '07:00:00';
SET end_time = '19:00:00';
IF current_time >= start_time AND current_time < end_time THEN
-- 从早上7点开始计数
SET current_count = TIME_TO_SEC(current_time) - TIME_TO_SEC(start_time);
ELSE
-- 从下午19点开始计数
SET current_count = TIME_TO_SEC(current_time) + (24 * 60 * 60) - TIME_TO_SEC(end_time);
END IF;
-- 查询表并使用时间函数过滤
SELECT *
FROM your_table
WHERE tCreateDate BETWEEN start_time AND end_time;
SELECT current_count;
END//
DELIMITER ;
```
在这个存储过程中,我们首先定义了开始时间 `start_time` 和结束时间 `end_time`,然后根据当前时间 `current_time` 判断计数方式。如果当前时间在7点到19点之间,计数从早上7点开始;如果当前时间在19点到第二天7点之间,计数从下午19点开始。
然后,我们使用 `BETWEEN` 运算符将时间函数 `tCreateDate` 与开始时间和结束时间进行比较,以过滤表中的数据。
最后,我们返回了查询结果和当前的计数值。
你可以通过调用这个存储过程来获取查询结果和计数值:
```sql
CALL calculate_count();
```
请注意,这里假设你的需求是每天都会重新计数,因此没有考虑日期的因素。如果需要考虑日期,请在存储过程中加入日期的逻辑。
阅读全文