Преобразовать этот запрос SQL Server в Oracle

У меня есть следующее в запросе SQL Server, который я должен преобразовать в Oracle sp

DATEADD(dd, 0, DATEDIFF(dd, 0, DATEADD(ss, -L_LAST_TIME, TR.TR_DATETIME))) AS TRDATE,

По сути вы вычитаете L_LAST_TIME секунд с TR_DATETIME а затем обрезать часть времени и оставить только часть даты.

2 ответа

Решение

Вы можете разделить интервалы:

select trunc(TR.TR_DATETIME - interval L_LAST_TIME SECOND) AS TRDATE  

или же

select trunc(TR.TR_DATETIME - NUMTODSINTERVAL(L_LAST_TIME, 'SECOND')) AS TRDATE

Мы можем сделать арифметику с датами в Oracle.

select trunc(tr.tr_time - (l_last_time/86400)) as trdate
from tr
/

Разделив l_last_time на 86400 превращает количество секунд в часть дня. Вычитая это из tr_time колонка дает вам новую, более раннюю дату. Усечение даты удаляет компонент времени.

Другие вопросы по тегам