1

我有一个将一些数据插入到表中的程序。

在我的表格中,我显示了如下输出的日期和星期数(丹麦语)

至乌格 42

TO 是当天的名称

Uge 是星期

42 是周数。

我想做的是让 TO 成为 TOR(Torsdag 的缩写,这是星期四的丹麦语)

我的代码目前看起来像这样:

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

Orcle 中是否有任何 whay 可以将日期作为 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  

获取日期描述格式:

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

我认为您应该将 a 保存Date在一DATE列中,并将所有其他内容留给渲染。这些是显示问题。

查询 ajava.sql.Date并使用java.text.DateFormat将其转换为您想要的任何字符串。

于 2012-10-24T11:37:43.413 回答
1

看起来没有其他格式模型可以满足您的需求。'DY' 给出了“一天的缩写名称”——在我的英语系统中,这意味着一个三个字母的缩写,但我猜在你们的语言中标准缩写是两个字母。

我建议不要使用子字符串,而是转换为一周中的数字日期,然后简单地进行映射,例如(使用英文缩写):

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 回答