Unix系统下中文星期变成英文的解决方法
需求描述:客户在Unix系统下报表发布时中文星期变成了英文,而在Windows下正常。如图所示:
Windows环境效果:
Unix环境效果:
需求分析:
一开始是用oracle的trunc()函数截取的时间day,从而2011年8月8日显示星期一,但却在Unix下变为了英文(Monday)。附录一是trunc()函数的介绍。那么这个问题怎么解决呢?
需求实现:
解决这个问题,可以在获取星期几的机制上换成另一种方式来获取,可以通过SQL语句来实现,如下:
select t.fdayreportid fid,
to_char(t.fcreatime, ‘yyyy-MM-dd’) fcreatime,
decode(to_char(t.fcreatime, ‘d’),
1,
‘星期日’,
2,
‘星期一’,
3,
‘星期二’,
4,
‘星期三’,
5,
‘星期四’,
6,
‘星期五’,
7,
‘星期六’,
”) fcreatday,
to_number(to_char(t.fcreatime, ‘mm’)) || ‘月‘ ||
to_number(to_char(t.fcreatime, ‘dd’)) || ‘日‘ fmd,
to_char(t.fcreatime, ‘yyyy’) || ‘年‘ fyear,
t.feditor,
t.ftotalstd,
t.ftotalcondition,
t.frisksprompt,
t.fmainprotectline,
t.ftunnelcameramsg,
t.ftunnelgasmsg,
t.faccidentmsg,
t.fothersmsg,
t.fjgdoorremarkmsg
from mtd_ac_dayreport t
where t.fdayreportid = ?
也可以把这种方式通过函数来实现,这样在Unix系统里就不会出现中文星期变为英文的情况了。
附录一:
其具体的语法格式如下:
Trunc(date[,fmt])
其中:
date 为必要参数,是输入的一个日期值
fmt 参数可忽略,是日期格式,用以指定的元素格式来截去输入的日期值。忽略它则由最近的日期截去
下面是该函数的使用情况:
TRUNC(TO_DATE(’24-Nov-1999 08:00 pm’),’dd-mon-yyyy hh:mi am’)
=’24-Nov-1999 12:00:00 am’
TRUNC(TO_DATE(’24-Nov-1999 08:37 pm’,'dd-mon-yyyy hh:mi am’),’hh’) =’24-Nov-1999 08:00:00 am’
trunc(sysdate,’yyyy’) –返回当年第一天.
trunc(sysdate,’mm’) –返回当月第一天.
trunc(sysdate,’d') –返回当前星期的第一天.