Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Interseção de intervalo de datas no SQL


Se o seu exemplo deveria ter dito 70 na primeira linha, então

assumindo @range_start e @range_end como seus parâmetros de condição:
SELECT SUM( LEAST(@range_end, stop) - GREATEST(@range_start, start) )
FROM Table
WHERE @range_start < stop AND @range_end > start

usando o maior /least e funções de data você deve conseguir o que precisa operando diretamente no tipo de data.