Oracle derby current_date проблема - PullRequest
0 голосов
/ 15 марта 2012

У меня есть запрос, который должен выполняться на Oracle. Вот фрагмент

select
        username,
        CASE WHEN eff_dt <= CURRENT_DATE and ((trmn_dt is null) or (trmn_dt > CURRENT_DATE)) THEN 'Y'
            ELSE 'N'

, но у нас также есть пара модульных тестов на основе derby, которые выполняют тот же запрос.

Теперь я хочу изменить его на использование SYSDATE или CURRENT_DATE+1/24.(чтобы исправить проблему различий в часовых поясах между центральным и восточным побережьем)

Но SYSDATE не поддерживается дерби, а арифметический синтаксис дерби отличается от оракула.

Как мне исправить этот дорожный блок?

1 Ответ

0 голосов
/ 15 марта 2012

Я не знаком с дерби, но вы, вероятно, можете создать функцию, которая будет возвращать правильную дату.Затем создайте похожую функцию в Oracle с тем же именем.
Ваш запрос будет выглядеть (как в Oracle, так и в Derby) следующим образом:

select username,
       CASE WHEN eff_dt <= YOUR_FUNCTION_NAME and ((trmn_dt is null) 
              or (trmn_dt > YOUR_FUNCTION_NAME)) THEN 'Y'
            ELSE 'N'
...