报表中同时用到了从JAVA中取得的日期和从ORACLE中取得的日期,日期格式必须统一。
 
1、JAVA中,我用SimpleDateFormat()格式化日期,语法如下:
SimpleDateFormat("dd-MMM-yy",Locale.US).format(new Date())
其中,第二个参数Locale.US是可选的,指定要把时间显示为哪个Locale的格式。
这里指定为Locale.US,则得出的结果中月份会显示为Jan的格式。
 
2、ORACLE中,用TO_CHAR()方法格式化日期,语法如下:
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