Oracle改变会话日期格式
Oracle改变会话日期格式
问题描述:在存储过程中转换时间的时候想要按着‘yyyy-mm-dd’格式输出,但是输出结果不是这个格式,比如‘2012-12-31’转换输出后是:‘31-12月-12’
解决:查了半天的资料都不多说,搜索关键字没找对,中间好不容易找到一个相同问题帖子,有层主就只说了句直接设置ALTER SESSION SET NLS_DATE_FORMAT=' || '''YYYY-MM-DD''
试了下,没效果,我是直接在PL/SQL里设置的。然后运行存储过程没效果,弄了半天,没解决。正要放弃的时候,突然灵感一来,我把这句话加到了存储过程里,O了。可能是我
笨没明白前面层主说的意思。有个问题,格式里有两个竖线,不知道有什么作用,也没去试。
execute immediate 'ALTER SESSION SET NLS_DATE_FORMAT=' || '''DD-MON-RRRR''';
execute immediate 'ALTER SESSION SET NLS_DATE_LANGUAGE=' || '''AMERICAN''';
(3)linux 下:oracle用户编辑 .bash_profile下 加入以下内容
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS '
重新登录即可生效
(4)用sysdba登录
然后更新props$这个表里的字段即可
update props$ set value = 'YYYY-MM-DD HH24:MI:SS' where parameter = 'NLS_DATE_FORMAT';