Это проблема с неявным округлением.DATE
тип данных (из-за TO_DATE()
) не поддерживает дробные секунды, поэтому 31,759 округляется до 32.
Попробуйте это:
SELECT
(TIMESTAMP '1970-01-01 00:00:00 UTC' + 1536698971759/1000 * INTERVAL '1' SECOND) AT TIME ZONE 'US/Eastern'
FROM dual;
или (TIMESTAMP '1970-01-01 00:00:00 UTC' + NUMTODSINTERVAL(1536698971759/1000, 'SECOND')) AT TIME ZONE 'US/Eastern'
, если выпредпочитаю
yields: 11.09.2018 16:49:31.759000000 -04:00