Ваша проблема связана с внутренним выбором с использованием datetime
. Как описано в руководстве , datetime(...)
эквивалентно strftime('%Y-%m-%d %H:%M:%S', ...)
, и вы заметите, что формат секунд - %S
, а не %f
, поэтому результат
datetime('2019-07-24 11:11:59', '-288.0110592 seconds')
- это
2019-07-24 11:07:10.000
неправильное значение (с дробными секундами)
2019-07-24 11:07:10.989
Изменение вызова datetime(...)
на strftime('%Y-%m-%d %H:%M:%f', ...)
т.е.
strftime('%Y-%m-%d %H:%M:%f', '2019-07-24 11:11:59', '-288.0110592 seconds')
дает правильный результат.
Обратите внимание, что вы можете упростить выражение и использовать оба модификатора во внешнем вызове strftime
:
select strftime('%Y-%m-%d %H:%M:%f', '2019-07-24 11:11:59', '-288.0110592 seconds', '+411.030309 seconds')
Вывод:
2019-07-24 11:14:02.019
Демо на dbfiddle