Портирование Oracle Date Manipulation - PullRequest
0 голосов
/ 26 апреля 2010

Мне нужно перенести это из синтаксиса Oracle в Postgresql.

И FLO_END_DT, и FLO_START_DATE имеют тип DATE в Oracle и TIMESTAMP БЕЗ ВРЕМЕННОЙ ЗОНЫ в Postgresql:

SELECT TRUNC( TO_CHAR(ROUND(( FL.FLO_END_DT- FL.FLO_START_DT)* 24), '9999D99'), 2)
 FROM FLOWS FL

Я недостаточно знаком с Oracle, чтобы знать, чего он пытается достичь.

Есть идеи?

1 Ответ

1 голос
/ 27 апреля 2010

Количество ЧАСОВ.

END_DATE-START_DATE даст дни, а умножение на 24 превратит его в часы.

Затем округляется, и результат отображается как 9999,99 (но бит после десятичной точки всегда будет нулевым из-за округления).

Наконец, TRUNC выполнит неявное преобразование обратно в число, потому что TRUNC не имеет смысла для строки.

Тот, кто собрал этот беспорядок, должен быть убран и &% @ ($ ^

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...