Oracle DB に対してヒキガエルでこのクエリを実行すると、次のようになります。
select
to_char(TRUNC(sysdate, 'DAY'),'DAY') start_of_the_week
from dual;
ロケール サーバーの設定に応じて、次のようになります。
Sunday --EN, USA
Monday -- DE, GERMANY
これは完全に理にかなっていて、大丈夫です。
次のように、OJDBC ドライバーを介して Java でまったく同じことを行う場合:
//....
Statement stm = JDBCConn.createStatement();
stm.execute("select to_char(TRUNC(sysdate, 'DAY'),'DAY') start_of_the_week from dual");
stm.getResultSet().next();
System.out.println(stm.getResultSet().getString("start_of_the_week"));
日曜日または月曜日に返されますが、これは、このステートメントを実行している JVM に提供されたクライアントのローカル設定によって異なります。これは、返される回答がサーバーのローカル設定ではなく、クライアントの設定に依存することを意味します。
修正は本当に簡単です、追加してください
Locale.setDefault(new Locale("EN", "US", "WIN")); //or German etc..
さて、私の実際の質問に移ります。なぜ誰もがこれが良い考えだと思うでしょうか?!? これが理にかなっている状況はありますか?私の意見では、これはバグであるか、少なくとも非常に悪い設計/コンセプトであるため、これは機能ですか。
よろしく、コリン