此处用多表举例,业务场景:xy_gygl_planissuance为方案运行表,xy_gygl_plan_card为该方案下不同卡片规则的明细表,方案运行表开始和结束时间就代表了卡片规则的运行和结束时间;查询一段时间内卡片规则的运行总时间,
SELECT
c.目标字段,
SUM(
CASE
WHEN p.结束时间字段 IS NULL THEN
TIMESTAMPDIFF( SECOND, GREATEST( p.开始时间字段, 查询区间的开始时间 ), 查询区间的结束时间 ) ELSE TIMESTAMPDIFF( SECOND, GREATEST( p.开始时间字段, 查询区间的开始时间 ), LEAST( p.结束时间字段,查询区间的结束时间 ) ) END
) AS 总执行时间
FROM
目标字段表 c
LEFT JOIN 关系表 p ON 关联关系
WHERE
c.目标字段 = '目标值'
AND ( p.开始时间字段 < 查询区间的结束时间 AND ( p.结束时间字段 IS NULL OR p.结束时间字段 > 查询区间的开始时间 ) )
根据自身业务自行调整即可