Вычтите время, используя Oracle PL / SQL - PullRequest
1 голос
/ 25 сентября 2019

Я создаю отчет с помощью BI Publisher.Теперь я хочу вычесть 4 часа в день.Например, дата, которую я получаю в базе данных Oracle, ниже,

2019-09-23T10:09:34.054+00:00

Теперь я хочу, чтобы она возвращалась в отчете с использованием sql,

2019-09-23T06:09:34.054+00:00

Как я могу это сделать?

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Использование INTERVAL?

SELECT ts - INTERVAL '4' HOUR
FROM yourTable;

Демо

Если ваши исходные данные на самом деле являются текстовыми, а не добросовестной временной меткойстолбец, затем вы можете использовать TO_TIMESTAMP_TZ, чтобы сначала сделать преобразование:

SELECT
    TO_TIMESTAMP_TZ(REPLACE(s, 'T', ' ') 'YYYY-MM-DD HH24:MI:SS.FF3TZH:TZM') AS ts_original,
    TO_TIMESTAMP_TZ(REPLACE(s, 'T', ' ') 'YYYY-MM-DD HH24:MI:SS.FF3TZH:TZM') - INTERVAL '4' HOUR AS ts_offset
FROM yourTable;
0 голосов
/ 26 сентября 2019

Вам просто нужно вычесть долю времени.Как это 4 часа назад:

select sysdate-1/6 from dual;
...