2016-06-01 2 views
-1

私が使用しているクエリがjdbcTemplateを使用して小文字で月を取得するには?

 String sql=select trim(CdateTo) cdate, 
     count(case when Verified = 'WithGrant' then 1 end) as grant, 
     count(case when Verified = 'WithDiscount' then 1 end) as CC 
     from mse where Verified IN ('WithDiscount','WithGrant') and 
     CdateTo > SYSDATE - 9 
     GROUP BY trim(CdateTo) 
     ORDER BY TO_DATE(cdate,'DD/MM/YYYY') 

と春jdbcTemplateコードであるが、これは私がそれは31のように私を返す必要がし​​たい31-MAY-16 のような日付を返す

 try { 
      return jdbcTemplate.query(sql, new RowMapper<Trif>() { 
       @Override 
       public Trif mapRow(ResultSet rs, int rowNum) throws SQLException { 
        Trif trif = new Trif(); 
        *************some code******* 
        Trif.setDate(rs.getString("cdate")); 
        ***********someCode********* 
        return trif; 
       } 
      }); 
     } catch (DataAccessException e) { 
      return null; 
     } 

のようなものです月五月は首都での最初の手紙を示していて、他は小さいです。 これをどのように達成することができますか?

+0

なぜ単純なString操作を管理しないのですか?ここには: 文字列smallLetters = rs.getString( "cdate"); –

+0

アプリケーションをステートレスとスケールのままにできるJava側でこれを処理するだけです。 SimpleDateFormatクラスで簡単にこれを管理できます。 –

答えて

0

あなたは日付が常にこのコードは、あなたのために働く必要があるDD-MONTH-YYとして書式設定されたと仮定することができた場合:

private String capitalizeMonth(String s) { 
     char[] c = s.toLowerCase().toCharArray(); 
     c[s.indexOf('-') + 1] = Character.toTitleCase(c[s.indexOf('-') + 1]); 
     return new String(s); 
    } 
0

すでに助言、あなたはJava側のケースを扱うことができたよう。 しかし、あなたの質問には注意を払うべき場所がいくつかあります。あなたがいる限りCdateToがvarchar型そのものであるとして罰金ですvarchar型を返す意味

あなたは

select trim(CdateTo) cdate, 

を持っています。 しかし

CdateTo > SYSDATE - 9 

は、これらの行のいずれかであなたは暗黙の型変換を有することを意味する - これは、NLSの設定に依存します。デフォルト設定が変更されると、コードが破損する可能性があります。

元の質問があります。 Oracleには本当に便利な機能があります。実際に必要なのはINITCAPです。したがって、 select initcap(trim(CdateTo)) cdateのようなことが役立ちます。あなたのCdateTo列の型がDATEある場合

しかし、その問題に対処するための正しい方法は次のようになります。

select trim(to_char(CdateTo,'dd-Mon-yy')) cdate, 

ご注意書式マスクとMonの資本Mに - この意志セッション/システム設定の変更と無関係に結果を一致させる

+0

ありがとうございました。私はすでにJava側でこの状況を処理していますが、私はクエリソリューションを探しています。私もtrim(to_char(CdateTo、 'dd-Mon-yy'))を試みましたが、このクエリには多くの時間がかかります。私は膨大なデータを持っているからです。あなたの説明は私を助ける:) – suraha

関連する問題