oracle varchar2转timestamp

有一个字段类型是varchar2(18 char),存放的是时间,比如:20121018052334.720, 怎么转换成timestamp格式?

使用oracle内置函数to_timestamp就可以了
select to_timestamp('1700','HH24MI') from dual
1、字符型转成timestamp代码如下:

select to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM')
from dual;

2、timestamp转成date型
代码如下:

select cast(to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM') as date) timestamp_to_date
from dual;

3、date型转成timestamp
代码如下:

select cast(sysdate as timestamp) date_to_timestamp
from dual;

4、获取timestamp格式的系统时间
代码如下:

select systimestamp from dual;

5、两date的日期相减得出的是天数,而两timestamp的日期相减得出的是完整的年月日时分秒小数秒
代码如下:

select systimestamp-systimestamp from dual;
select sysdate-sysdate from dual;

注:所以,timestamp要算出两日期间隔了多少秒,要用函数转换一下。
6、to_char函数支持date和timestamp,但是trunc却不支持TIMESTAMP数据类型。
7、timestamp只支持秒的小数点后面六位。
代码如下:

select to_char(systimestamp, 'yyyymmdd hh24:mi:ssxff6') FROM dual;

注:ssxff6也可以为ssxff7、ssxff8、ssxff9等,但只到6有效。
8、获取系统时间的语句:
代码如下:

SELECT sysdate,systimestamp,to_char(systimestamp, 'yyyymmdd hh24:mi:ssxff6') FROM dual;
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-11
select to_timestamp('20121018052334.720', 'yyyymmddhh24miss.ff3') from dual;
ff后面的数字代表你想保留几位本回答被提问者和网友采纳
第2个回答  2014-02-18
SELECT TO_TIMESTAMP ('20121018052334.720', 'yyyymmddhh24miss.FF') FROM DUAL;

FF=Fractional seconds
第3个回答  2014-02-17
先转为to_date
然后在转timestamp就行了。
直接转不行。追问

我用select to_date('20121018052334', 'yyyymmddhhmiss') from dual;可以转换, 但是有后边的毫秒时候就不知道怎么转了,求帮助。