Oracle 字符串转换为日期格式

字符串如下:
Jan 1 2006 9:59:04:343AM
Mar 21 2006 8:05:11:563AM
Apr 13 2007 10:43:30:966AM
附图:

求助,有什么简单点的方式,转换成date格式,可以把毫秒忽略
问题已经解决:
to_date(substr(jzrq, 1, 20) || ' ' || substr(jzrq, 25, 2), 'mon dd yyyy hh12:mi:ss AM');

谢谢各位。

1.将字符串类型转换为数字类型,这个方法直接用to_number()进行转换,具体的语法是to_number(STR)可以进行转换。

2.将数字类型转换成字符串类型的,这个转换使用to_char(),它有点像上面的to_number()模式,999表示相同的内容。

3.将日期类型转换成字符串类型,这种方法其实也用的是to_char(),就是将日期格式的转换成自己想要的格式类型的,这种方法比较个性化一点。

4. 下面的代码将日期类型转换为一种常见的字符串类型,这种类型更常见,并且是一种更完整的字符串格式。

5.将字符串类型转换成日期类型。这种转换方式用to_date()进行转换。用法也比较简单,转换的日期格式也是自己自定义的。

6.完成效果图。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
你的这串字符串很难直接让数据库识别,但是好在它有规律,按照下面的方法应该可以转换过来。
现在假设表名为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个月份的英文缩写和对应月份补齐即可。本回答被提问者和网友采纳
第2个回答  2012-11-21
oracle;
TO_DATE('时间','yyyy-MM-dd HH24:MI:ss')) --24代表24时制,后面是MI,不是MM哦!
如:
TO_DATE(’2008-10-19 10:11:30.345‘,'yyyy-MM-dd HH24:MI:ss'))
第3个回答  2012-11-21
TO_DATE(char[, 'fmt'])

TO_DATE(‘01/7月/2001','DD/MON/YYYY') 类似就可以了
第4个回答  2012-11-21
在当前session执行。
alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';

然后再执行sql.

注意只在当前session有效。
相似回答