现在假设表名为TBL,存储该列数据的字段名为DDATE,用下列的语句可以实现日期的转换
SELECT
DDATE,
TO_DATE(SUBSTR(DDATE,
8,
4)
||
DECODE(SUBSTR(DDATE,
1,
3),
'Feb',
'01',
'Jan',
'02',
'Mar',
'03')
||
LPAD(TRIM(SUBSTR(DDATE,
5,
2)),
2,
'0')
||
LPAD(TRIM(SUBSTR(DDATE,
13,
8)),
8,
'0'),'YYYY-MM-DD
HH:MI:SS')
FROM
TBL
以上的部分你需要在DECODE部分将其余的9个月份的英文缩写和对应月份补齐即可。解决方法很多!你的这串字符串很难直接让数据库识别,但是好在它有规律,按照下面的方法应该可以转换过来。现在假设表名为TBL,存储该列数据的字段名为DDATE,用下列的语句可以实现日期的转换SELECTDDATE,TO_DATE(SUBSTR(DDATE,8,4)||DECODE(SUBSTR(DDATE,1,3),'Feb','01','Jan','02','Mar','03')||LPAD(TRIM(SUBSTR(DDATE,5,2)),2,'0')||LPAD(TRIM(SUBSTR(DDATE,13,8)),8,'0'),'YYYY-MM-DDHH:MI:SS')FROMTBL以上的部分你需要在DECODE部分将其余的9个月份的英文缩写和对应月份补齐即可。select to_char(to_date('22-10月-13'),'yyyy-mm-dd') from dual;
可以执行,先to_date('22-10月-13')的结果是2013/10/22,然后to_char转换为2013-10-221临时修改
SQL> alter session set nls_date_format='yyyymmdd';
这种方法只能改掉在当前会话里的日期显示格式,当重新建立一个会话的时候,必须重新执行该命令。
2改变oracle默认的日期显示格式
ON UNIX :
change profile NSL_DATE_FORMAT=YYYYMMDD;
export NLS_DATE_FORMAT
On windows:
在注册表的KEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0
添加字串值NLS_DATE_FORMAT将其值设为YYYY-MM-DD-HH24:MI:SS
或者:initsidora 中添加NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss。同时去掉注册表中的NLS_LANG字串值可通过用PL/SQL来改变日期格式。
1、登录PL/SQL。
2、登录后,点击菜单栏,工具—首选项。
3、左侧列表找到“日期/时间”。
4、可通过右侧的各种方式进行自定义的格式和自带的格式来进行修改,修改后点击“确定”按钮保存即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)