Есть довольно интересное решение, если вы знаете максимальное время, которое у вас когда-либо будет. Создайте таблицу со всеми числами в ней от одного до вашего максимального времени.
millisecond
-----------
1
2
3
...
1240
Назовите это time_dimension (этот метод часто используется в многомерном моделировании в хранилищах данных.)
Тогда это:
SELECT
COUNT(*)
FROM
your_data
INNER JOIN time_dimension ON time_dimension.millisecond BETWEEN your_data.start AND your_data.stop
WHERE
time_dimension.millisecond BETWEEN 1030 AND 1100
... даст вам общее количество миллисекунд времени работы между 1030 и 1100.
Конечно, можете ли вы использовать эту технику, зависит от того, можете ли вы безопасно предсказать максимальное количество миллисекунд, которое когда-либо будет в ваших данных.
Это часто используется в хранилищах данных, как я уже сказал; он хорошо подходит для некоторых видов проблем - например, я использовал его для систем страхования, где было необходимо общее количество дней между двумя датами, и где общий диапазон дат данных было легко оценить (из самая ранняя дата рождения клиента - дата через пару лет в будущем, после даты окончания любой политики, которая была продана.)
Может не сработать для вас, но я решил, что стоит поделиться как интересная техника!