Oracle derby current_date问题

时间:2012-03-15 05:39:50

标签: oracle date derby date-arithmetic

我有一个应该在oracle上运行的查询, 这是片段

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

但我们也有几个基于德比的单元测试运行相同的查询。

现在问题是我要将其更改为使用SYSDATE或使用CURRENT_DATE+1/24。 (修复中央和东海岸客户端 - 服务器时区差异问题)

但是derby并不支持SYSDATE,并且derby的算术语法与oracle不同。

如何解决这个障碍?

1 个答案:

答案 0 :(得分:0)

我不熟悉德比,但你可以创建一个可以返回正确日期的函数。然后在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'