过滤器的时间长度 [英] filter length of time

查看:245
本文介绍了过滤器的时间长度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要计算上午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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆