我有一个程序可以将一些数据插入表中。
在我的表格中显示日期和星期数字,如下面的输出(丹麦语)
TO Uge 42
其中TO是当天的名称
Uge是一周
和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;
}
请注意,我没有让我的前同事做过这个代码而且这很麻烦!
答案 0 :(得分:1)
我认为您应该在Date
列中保存DATE
,并留下所有其他内容进行渲染。这些是显示问题。
查询java.sql.Date
并使用java.text.DateFormat
将其转换为您想要的任何字符串。
答案 1 :(得分:1)
看起来没有其他格式模型可以满足您的需求。 'DY'给出了“缩写的日期名称” - 在我的英语系统中,这意味着三个字母的缩写,但我想用你的语言标准缩写是两个字母。
我建议转换到一周中的数字日,然后简单地使用映射(使用英文缩写),而不是做一个子字符串:
CASE TO_CHAR(sysdate,'D')
WHEN 1 THEN 'SUN'
WHEN 2 THEN 'MON'
WHEN 3 THEN 'TUE'
<et cetera>
END
答案 2 :(得分:0)
示例:
select to_char(sysdate,'YYYY-MON-DD') from dual;