2012-01-24 2 views
0

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

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

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

ответ

1

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

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

или

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

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

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

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