2012-03-15 11 views
0

私は、オラクル上で実行されていることになっているクエリを持っている。ここ はスニペットOracleのダービーCURRENT_DATE問題

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を使用するように変更したいと思っています。 (中央および東海岸のクライアント/サーバーのタイムゾーンの差分の問題を解決するため)

SYSDATEはderbyでサポートされておらず、derbyの算術構文はoracleとは異なります。

この道路ブロックを修正するにはどうすればよいですか?

+0

のOracle Expressは、可能な限り同様のDBMSでテストすることができるように実行するためではない任意の理由は? http://www.oracle.com/technetwork/products/express-edition/overview/index.html?origref=http://www.google.se/url?sa=t&rct=j&q=&esrc=s&source=web&cd= 1&ved = 0CC8QFjAA&url = http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fデータベース%2Fexpress-Edition%2Foverview%2Findex.html&ei = Z4JhT82uOuj_4QS29pn-Bw&usg = AFQjCNFOJiAhUUvvByNyORhipe7zzPZpA&sig2 = YSfSfTVuVnImCqz6TXHSYg –

答えて

0

私はDerbyに慣れていませんが、おそらく正しい日付を返す関数を作成することができます。同じ名前のoracleに同様の関数を作成します。
あなたのクエリは次のように(Oracleとのダービーの両方)、その後になります。

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