如何对日期进行转换?

字符串“Fri Mar 19 18:01:37 CST 2010”,在oracle中如何将它转换成日期格式?

重新执行下这个语句。。。

[code="sql"]UPDATE EFP_MEMBER_GENERAL_INFO set CREATION_DATE_BAK = to_date(REPLACE( CREATION_DATE,'CST',''),'Dy Mon DD HH24:MI:SS YYYY') + interval '14' hour where EFP_MEMBER_ID = 142 [/code]

[code="sql"]REPLACE( CREATION_DATE,'')[/code]

改成

[code="sql"]REPLACE( CREATION_DATE,'CST','')[/code]

文字打太多了,没注意那个CST。。。。
[code="sql"]update {表名} set {被附的字段(date型)} = to_date(REPLACE({你的字符串格式的字段},'CST',''),'Dy Mon DD HH24:MI:SS YYYY') + interval '14' hour where {你自己的过虑条件({你的字符串对应的字段 like '%CST%'})} [/code]

使用oracle的日期转换函数to_date()。。

感觉只能先把
CST这几个字符串先拿掉,才能转
比如

SELECT to_date(REPLACE('Fri Mar 19 18:01:37 CST 2010','CST',''),'Dy Mon DD HH24:MI:SS YYYY') FROM DUAL;

上网查了CST时间与北京时间的时间差好像是14小时

SELECT to_char(to_date(REPLACE('Fri Mar 19 18:01:37 CST 2010','CST',''),'Dy Mon DD HH24:MI:SS YYYY') + interval '14' hour,'DY D Mon DD HH24:MI:SS YYYY') FROM DUAL;

select sysdate - interval '7' day from dual

1、减号可以换成加号;
2、day 可以换成 minute、hour、month、year

只知道转换,学习一下

TO_DATE(string,'format')
将字符串转化为ORACLE中的一个日期

update {表名} set {被附的字段(date型)} = to_date(REPLACE({你的字符串格式的字段},''),'Dy Mon DD HH24:MI:SS YYYY') + interval '14' hour where {你自己的过虑条件}

你那字符串格式不对,表里有不合法的数据,看报错信息觉得是年份不对
你先select REPLACE({你的字段},'CST','') from 表

看哪个时间格式不符合这种格式的
Fri Mar 19 18:01:37 2010

或者年份不是在 -4713 and +9999 范围内的

如果使用replace的话,那么出来的应该是这种格式的,比如说今天吧,22-3月 -10
它会把年份的前两位去掉,只是保留后两位的。。。肯定不在那个范围内的。。

那你就加过虑条件,比如
update {表名} set {被附的字段(date型)} = to_date(REPLACE({你的字符串格式的字段},''),'Dy Mon DD HH24:MI:SS YYYY') + interval '14' hour where {你自己的过虑条件({你的字符串对应的字段 not like '%GMT%'})}

GMT 跟北京时间的时间差是+8

也就是常说的GMT +8

说明你的时间还有很多不统一的格式,年份不在-4713 and +9999,
或者Fri Mar 19 18:01:37 CST 2010,Fri Mar 19 18:01:37 GMT 2010
除这两种格式外,还有很多不确定的格式,你得先把他们排除掉

或者这样

update {表名} set {被附的字段(date型)} = to_date(REPLACE({你的字符串格式的字段},''),'Dy Mon DD HH24:MI:SS YYYY') + interval '14' hour where {你自己的过虑条件({你的字符串对应的字段 like '%CST%'})}

把not like '%GMT%'
改成 like '%CST%'
试试

思路应该是这样的,至于你里面的数据是否都是这种格式只能你自己去 检查了。

你把你的SQL贴出来

CST时间与北京时间的时间差好像是14小时

GMT 跟北京时间的时间差是+8

也就是常说的GMT +8

如果你不要北京时间,也可以去掉(看你数据使用的是哪个国家的时间了?)

嗯 :D :D :D