Преобразовать этот запрос 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
колонка дает вам новую, более раннюю дату. Усечение даты удаляет компонент времени.