Я тестировал это в MySQL, но уверен, что метод можно адаптировать для работы в DB2:
SELECT
(end_time DIV 10000) * 3600 +
((end_time DIV 100) % 100) * 60 +
end_time % 100 -
(start_time DIV 10000) * 3600 -
((start_time DIV 100) % 100) * 60 -
start_time % 100
FROM table1
Результат:
3
Способ, которым это работает, заключается в использовании целочисленного деления и операции по модулю для извлечения частей HH MM и SS каждой метки времени и преобразования каждой части в секунды. Затем секунды складываются вместе, чтобы сформировать общее количество секунд с полуночи для каждой отметки времени. Разница между этими двумя дает время транзакции.
Обратите внимание, что это не будет работать, если транзакция начинается до полуночи и заканчивается после полуночи. Возможно, вам придется подумать, изменился ли день и исправить это. Если у вас нет дня, хранящегося в вашей базе данных, вы можете найти отрицательные времена перехода и добавить 24 часа, чтобы сделать их положительными, и это должно дать правильный результат (если транзакции не превышают одного дня, но Я думаю, что на практике это маловероятно).
Моя попытка написать это для DB2 (не тестировалась):
SELECT
(end_time / 10000) * 3600 +
MOD(end_time / 100, 100) * 60 +
MOD(end_time, 100) -
(start_time / 10000) * 3600 -
MOD(start_time / 100, 100) * 60 -
MOD(start_time, 100)
FROM table1