过滤器的时间长度 [英] filter length of time
本文介绍了过滤器的时间长度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要计算上午8点到晚上10点之间的时间。其他时间我不需要。
,现在我用excel做这个,我想做自动化的过程
I need to calculate the time that is between 8AM and 10PM. Other time I dont need. and now I do this by excel, and I want to do automate the process
我有下表,事件
start_date | end_date | duration_REAL | duration_08AM_a_10PM
-------------------------------------------------------------------------------
08:00AM 20-05-2014 | 02:00 PM 20-05-2014 | 06:00 | 06:00
04:00AM 20-05-2014 | 06:00 AM 20-05-2014 | 02:00 | 00:00
08:00AM 20-05-2014 | 10:00 PM 20-05-2014 | 14:00 | 14:00
04:00AM 20-05-2014 | 11:00 PM 20-05-2014 | 19:00 | 14:00
04:00AM 20-05-2014 | 04:00 PM 21-05-2014 | 36:00 | 24:00
DATE = TIME DAY-MM-YY
DATE = TIME DAY-MM-YY
我有实际的持续时间,但是我想要在上午8点到晚上10点之间的活动持续时间。
What I have is the real duration, but, I want to the duration for the event between 8AM and 10PM.
例如,
- 如果我的活动从凌晨4点开始,早上5点结束,则考虑8 AM-10PM的活动的持续时间为00hs。
- 如果我的活动从今天凌晨4点开始,至今天下午2点结束,则上午8点至10点的活动时间为6小时。
- 如果我的活动从今天下午2点开始,下午2点结束,8到22的时间将为14小时。
推荐答案
这是我的回答...谢谢你们!
here is my answer... thanks guys!
DELIMITER $$
CREATE FUNCTION `BD`.`func_duration`(fecha_ini DATETIME, fecha_fin DATETIME)
RETURNS FLOAT
BEGIN
DECLARE recorte FLOAT;
SET recorte = -1;
WHILE (fecha_ini <= fecha_fin) DO
IF (HOUR(fecha_ini) >= 6 AND HOUR(fecha_ini) <= 21) THEN
SET recorte = recorte + 1;
END IF;
SET fecha_ini = DATE_ADD(fecha_ini, INTERVAL 1 MINUTE);
END WHILE;
RETURN recorte;
END$$
DELIMITER ;
这篇关于过滤器的时间长度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文