业务中,遇到这样一个需求:需要判断在前一个节点业务操作后(取前一节点的操作时间),判断后一节点操作是否在3个小时内完成,其中晚上17:00到第二天早上8:00不纳入计算范围。
思路:首先判断前一节点操作时间是否临近剔除范围,即使用hour
函数判断小时+3是否在17:00到第二天早上8:00范围。如果在,后一节点时间-前一节点时间-13进行判断,如果不在用后一节点时间-前一节点时间进行判断。
select*
from tableName
where if((hour(前一节点时间)+3>19 or hour(前一节点时间)+3<8),unix_timestamp(后一节点时间)-unix_timestamp(前一节点时间)-13*60*60,unix_timestamp(后一节点时间)-unix_timestamp(前一节点时间)) > 3*60*60