1

テーブルにデータを挿入するプログラムがあります。

私のテーブルでは、次の出力のように曜日と週の番号を示しています(デンマーク語)

Uge42へ

TOはその日の名前です

うげは週です

42は週の数です。

私がやりたいのは、TOをTORにすることです(木曜日のデンマーク語であるTorsdagの略)

現在、私のコードは次のようになっています。

"DY' || ' ' || '\"Uge\" '|| 'IW";

Orcleに3文字の文字列として日付を取得できる理由はありますか、それとも文字列のサブ文字列を作成して変更する必要がありますか?

プログラムから追加されたSQLコードを更新します

String sql =
            "SELECT                                                                     " +
            "   TO_CHAR(MIN(TIDSPUNKT),'"+getDateDescriptionFormat(when)+"') AS PERIOD, " +
            "   NVL(QUEUE,' ') AS QUEUE,                                                " +
            "   NVL(SUM(ANTAL_KALD),0) AS CALLS,                                        " +
            "   NVL(SUM(ANTAL_BESVARET),0) AS ANSWERED_CALLS,                           " +
            "   NVL(SUM(BESVARET_25_SEK),0) AS ANSWERED_CALLS_25_SEC,                   " +
            "   NVL(SUM(INTERN_KALD),0) AS INTERNAL_CALLS                               " +
            "FROM                                                                       " +
            "   KS_DRIFT.PERO_NKM_KØ_OVERSIGT                                           " +
            "WHERE                                                                      " +
            "   TIDSPUNKT >= '"+getStartDate(start,when)+"' AND                         " +
            "   TIDSPUNKT <= '"+ slut+"' AND                                            " +
            "   TO_CHAR(TIDSPUNKT,'DY') NOT IN ('AB')                                   " +
            "GROUP BY                                                                   " +
            "   TRUNC(TIDSPUNKT,'"+getDateFormatString(when)+"'),                       " +
            "   QUEUE                                                                   " +
            "ORDER BY                                                                   " +
            "   PERIOD  

getDateDiscribtionFormat:

private String getDateDescriptionFormat(char when){
        if (when == 'D')return "DY' || ' ' || '\"Uge\" '|| 'IW";
        if (when == 'W')return "\"Uge\" '||'IW";
        if (when == 'M')return "Mon.' || ' ' || 'YYYY";
        if (when == 'Y')return "YYYY";
        return null;
    }

私はこのコードを以前の同僚が作成したものではなく、面倒であることに注意してください。

4

3 に答える 3

1

Dateを列に保存し、DATE他のすべてのものをレンダリング用に残しておく必要があると思います。これらは表示の問題です。

aをクエリし、java.sql.Dateそれを使用java.text.DateFormatして任意の文字列に変換します。

于 2012-10-24T11:37:43.413 に答える
1

あなたが望むことをする他のフォーマットモデルはないようです。「DY」は「日の略称」を示します。私の英語システムでは、これは3文字の略語を意味しますが、あなたの言語では、標準の略語は2文字だと思います。

部分文字列を作成するのではなく、曜日を数値に変換してから、たとえば(英語の略語を使用して)単純にマッピングすることをお勧めします。

CASE TO_CHAR(sysdate,'D')
  WHEN 1 THEN 'SUN'
  WHEN 2 THEN 'MON'
  WHEN 3 THEN 'TUE'
  <et cetera>
END
于 2012-10-24T12:52:56.153 に答える
0

例:

select to_char(sysdate,'YYYY-MON-DD') from dual;
于 2012-10-24T11:38:22.493 に答える