报表中同时用到了从JAVA中取得的日期和从ORACLE中取得的日期,日期格式必须统一。
1、JAVA中,我用SimpleDateFormat()格式化日期,语法如下:
SimpleDateFormat("dd-MMM-yy",Locale.US).format(new Date())
其中,第二个参数Locale.US是可选的,指定要把时间显示为哪个Locale的格式。
这里指定为Locale.US,则得出的结果中月份会显示为Jan的格式。
这里指定为Locale.US,则得出的结果中月份会显示为Jan的格式。
2、ORACLE中,用TO_CHAR()方法格式化日期,语法如下:
TO_CHAR(SYSDATE, 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE=AMERICAN')
TO_CHAR(SYSDATE, 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE=AMERICAN')
其中,第三个参数也是可选的,用于指定NLS参数,用意跟SimpleDateFormat的第二个参数相同。
在ORACLE中,也可以用DECODE()函数,自行转换,代码如下:
select to_char(sysdate,
'dd') ||
'-' ||
DECODE(substr(to_char(sysdate, 'dd-mm-yy'), 4, 2), '01', 'JAN' ,
'02', 'FEB' ,
'03', 'MAR' ,
'04', 'APR' ,
'05', 'MAY' ,
'06', 'JUN' ,
'07', 'JUL' ,
'08', 'AUG' ,
'09', 'SEP' ,
'10', 'OCT' ,
'11', 'NOV' ,
'12', 'DEC' ,
'ERROR') || '-' || to_char(sysdate, 'yyyy')
FROM dual
DECODE(substr(to_char(sysdate, 'dd-mm-yy'), 4, 2), '01', 'JAN' ,
'02', 'FEB' ,
'03', 'MAR' ,
'04', 'APR' ,
'05', 'MAY' ,
'06', 'JUN' ,
'07', 'JUL' ,
'08', 'AUG' ,
'09', 'SEP' ,
'10', 'OCT' ,
'11', 'NOV' ,
'12', 'DEC' ,
'ERROR') || '-' || to_char(sysdate, 'yyyy')
FROM dual
转载于:https://blog.51cto.com/nikoo/55787