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()函数返回以指定元素格式截去一部分的日期值。

其具体的语法格式如下:

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') –返回当前星期的第一天.

热门文章