集智平台Unix系统下中文星期变成英文的解决方法

需求描述:客户在Unix系统下报表发布时中文星期变成了英文,而在Windows下正常。

需求分析

一开始是用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()平台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') –返回当前星期的第一天.

本文标签: