您的位置:首页 > 数据库 > Oracle

Oracle OAF 中用到的日期转换绝招

2011-12-15 14:09 330 查看
FROM:http://hi.baidu.com/yunfanleo/blog/item/29936c43d91a61089213c6c9.html

OAF中处理日期类型总是很尴尬,java日期和Oracle的日期类型转来转去的,而且极易出错。举个例子,我需要在OAF中将一个J***A DATE 类型的参数P_DATE传给PL/SQL中的一个SQL
DATE类型的参数,首先要把P_DATE转换成String类型,然后方法一:

在传进plsql前将这个String参数转换为SQL DATE类型参数,然后传进函数,这么做

java.text.SimpleDateFormat sdf =

new java.text.SimpleDateFormat("yyyy-MM-dd");

insertInvoiceCaller.setDate(9,

new java.sql.Date(sdf.parse(Util.startDate).getTime()));将它传进第九个参数中。

大家可以数一下这中间做了多少次转换。。。汗。。。



方法二: 直接把String类型的参数传入SQL函数中,在SQL内部用to_date之类的函数将参数转换成DATE类型。这种方法简单一点,但还是有问题!不管是这里的to_date还是方法一中,都需要提供一个日期格式字符串,"yyyy-MM-dd",而这样做是会出问题滴。

大家可以观察下,OAF页面中,如果以英文环境登陆,日期的月份会变成月份缩写,类似Aug,Sep之类的,这时候用"yyyy-MM-dd"这样的格式字符串就出问题啦~~会提示不可识别的月份。

结果就是,你的页面在中文环境下运行良好,而如果用户在英文界面登陆会狂报错~~!

最终的解决方法~~大绝招:fnd_conc_date.string_to_date('04-Nov-2009 23:41:02')。

这个函数一般是做报表时用到的,异常强大,不用给出日期格式字符串,自动识别转换一切合法日期字符串,跨语言~~!只要在sql中加这么一个转换,可以放心让它处理任何合法的日期字符串,而不必担心语言之类的恶心问题。(话说本来OAF中日期格式就够乱套了,还扯到环境语言。。。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: