Oracle 字符串转换TIMESTAMP类型或Date类型
一、使用
Oracle
函数:
TO_TIMESTAMP_TZ('2009-3-9 17:51:23.23 -05:00','YYYY-MM-D HH24:MI:SS.FF TZH:TZM') TO_DATE(yourdate,'YYYY-MM-D HH24:MI:SS'); // 字符串转日期Date T0_CHAR(yourdate,'YYYY-MM-D HH24:MI:SS'); // 日期Date转字符串 eg: update t_fl_flownote set sendtime=TO_TIMESTAMP_TZ('2009-11-30 10:47:16','YYYY-MM-DD HH24:MI:SS') to_date('2012-11-13','yyyy-mm-dd') 二、转别人的日志 我们都知道date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒(fractional_seconds_precision),可以是0 to 9,缺省是6。 但是对date类型的运算很简单,有很多函数可用来处理;而两个timestamp的差则是很直观地显示为多少天+多少小时+多少分钟+多少秒+多少小数秒, SQL> create table test (T1 TIMESTAMP(6), 表已创建。 SQL> insert into test values( 已创建 1 行。 SQL> 提交完成。 SQL> 两个timestamp的差则是很直观地显示为多少天+多少小时+多少分钟+多少秒+多少小数秒: 但要简单地转化为某一个精度却比较麻烦,用类似date类型的处理方法是不行的。如转化为分: 发现结果根本不是原先想要的,而是在原先的“多少天+多少小时+多少分钟+多少秒+多少小数秒”的每一项都乘以1440再进行进制处理。 最容易理解的就是用substr将两个timestamp的差进行分割转化处理: SQL> SELECT substr((t2-t1),instr((t2-t1),' ')+7,2) seconds, SECO MINU HOUR DAYS WEEKS
或者利用自定义函数来实现将天数转换成“天时分秒”格式: CREATE OR REPLACE FUNCTION F_DAYS2STR(P_DAYS IN NUMBER DEFAULT 0) 如果最后结果的精度要求不高时(在分或分以上时),就可以先将timestamp转化为date再结算,这样就简单多了: SQL> select (to_date(to_char(t2,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss' 10 1450 1530.16667 date转换为timestamp: SELECT CAST(sysdate as timestamp) from dual; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |