У вас есть две проблемы в вашем запросе.Во-первых, вы использовали неверное базовое время.Как отмечает @GordonLinoff, базовое время для даты Excel на самом деле составляет 1900-01-01, а в Excel 1900 считается високосным годом.Это не ошибка в Excel как таковая, а сознательное проектное решение , которое было принято для копирования (глючного) поведения Lotus 1-2-3, которое имело такоеошибка.Итак, в Lotus 1-2-3 это ошибка, но в Excel это особенность.:-) Во-вторых, в датах Excel целая часть представляет число дней с базовой даты, а дробная часть представляет дробь дня .Однако в своем вызове NUMTODSINTERVAL
вы указали аргумент interval_unit
как 'SECOND'
;это должно было быть 'DAY'
.
Соединяя эти вещи, мы получаем
WITH cte AS (SELECT 43439.961377314816 AS WRITETIMESTAMP FROM DUAL)
SELECT
(timestamp '1899-12-30 00:00:00 GMT' + numtodsinterval(WRITETIMESTAMP, 'DAY')) at time zone 'CST',
WRITETIMESTAMP
FROM
cte
dbfiddle здесь
Удачи.