Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JavaのCalenderクラスで取得する絶対週とOracleで取得する絶対週

JavaのCalenderクラスで年の絶対週(1年の何週目の週か)を取得すると、1月1日を最初の週として取得します。
ですがOracleで絶対週を取得すると、論理的な絶対週を取得します。

JavaをOracleの絶対週、またはOracleをJavaの絶対週に合わせられる方法がありましたら、ご教授願います。

【Java】
        String dt = "20060101";
        Calendar cal;
        cal = Calendar.getInstance();
        cal.set(Integer.parseInt(dt.substring(0,4)),
                Integer.parseInt(dt.substring(4,6)) -1,
                Integer.parseInt(dt.substring(6,8))
               );
       
        int weekNum = cal.get(Calendar.WEEK_OF_YEAR );
        DecimalFormat df = new DecimalFormat("00");
        String absWeekNum = dt.substring(0,4) + String.valueOf(df.format(weekNum));
        System.out.println(absWeekNum);

<結果>
200601


【Oracle】
2006/01/01 ⇒ 2005年の52週目
SQL> select to_char(to_date('20060101', 'yyyymmdd'), 'iw')
  2  from dual;

TO
--
52

2006/01/01 ⇒ 2006年の1週目
SQL> select to_char(to_date('20060102', 'yyyymmdd'), 'iw')
  2  from dual;

TO
--
01

2

回答

5748

閲覧

2件の回答

評価

0

OracleでJavaと同じ結果を得るならiwではなくwwを指定、
JavaでOracleと同じ結果を得るならメソッドを書く、
ということで。

評価

0

ありがとうございました。
勉強になりました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。