Java 甲骨文获得日期与3个字母
我有一个程序,可以在表中插入一些数据 在我的表格中,我显示了日数和周数,如以下输出(丹麦语) 到Uge 42 今天的名字是什么 Uge是一周 42是一周的数字 我想做的是得到to to be TOR(Torsdagwhich是周四的丹麦语单词的缩写) 目前我的代码如下所示:Java 甲骨文获得日期与3个字母,java,database,oracle,Java,Database,Oracle,我有一个程序,可以在表中插入一些数据 在我的表格中,我显示了日数和周数,如以下输出(丹麦语) 到Uge 42 今天的名字是什么 Uge是一周 42是一周的数字 我想做的是得到to to be TOR(Torsdagwhich是周四的丹麦语单词的缩写) 目前我的代码如下所示: "DY' || ' ' || '\"Uge\" '|| 'IW"; 有什么办法可以让我把日期写成3个字母的字符串,或者我必须把字符串的子字符串改一下吗 更新从我的程序添加的SQL代码 String sql =
"DY' || ' ' || '\"Uge\" '|| 'IW";
有什么办法可以让我把日期写成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
请注意,我并没有把这段代码写成我以前的同事写的,它很混乱 我认为您应该在
日期
列中保存一个日期
,并将所有其他内容留给渲染。这些都是显示问题
查询java.sql.Date
并使用java.text.DateFormat
将其转换为所需的字符串。示例:
select to_char(sysdate,'YYYY-MON-DD') from dual;
看起来没有其他格式模型可以满足您的要求。”DY’给出了“一天的缩写名称”——在我的英语系统中,这意味着一个三个字母的缩写,但我猜在你们的语言中,标准缩写是两个字母 与使用子字符串相比,我建议将其转换为一周中的数字天,然后简单地进行映射,例如(使用英文缩写):
CASE TO_CHAR(sysdate,'D')
当1时,然后是“太阳”
当2时,然后“MON”
3点时,然后是“星期二”
结束
问题是,代码非常混乱,清理它需要大量的工作(我没有创建代码),所以他做的是以下声明:我要更新我原来的帖子,确实非常混乱。是时候重构了。不要让这种味道永久化。您应该改变的其他事情之一是使用绑定变量,而不是将日期连接到SQL查询中——这会导致在执行连接时一次隐式转换为文本,在执行查询时第二次隐式转换回日期。如果会话的默认日期格式发生更改,您可能会得到失败或错误的结果,而且您很难为每个不同的日期解析新查询。看起来已经有一个date
列,TIDSPUNKT
,他只是在查询中获取其值时尝试设置格式。但您可能是对的,如果要将这些数据拉到某个前端进行显示,那么在那里进行文本转换可能更有意义。对,我来说,将这些数据嵌入数据库是没有意义的。小心点,在许多非美国地区,“D”将在周一返回1(取决于NLS_地区
)
select to_char(sysdate,'YYYY-MON-DD') from dual;
CASE TO_CHAR(sysdate,'D')
WHEN 1 THEN 'SUN'
WHEN 2 THEN 'MON'
WHEN 3 THEN 'TUE'
<et cetera>
END