oracle 将Number型字段转为时间类型 将毫秒转为时间类型的
来源:互联网 发布:数控程序员试题 编辑:程序博客网 时间:2024/05/01 17:10
现在平台有个字段是用来记录插入时间的,但是是用number型存储,想转为时间类型的。
结果:
SELECT TO_CHAR(字段名 / (1000 * 60 * 60 * 24) + TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS CDATE FROM 表名;
解决问题的过程:
http://blog.csdn.net/a9529lty/article/details/5306622
ORACLE 毫秒转换为日期 日期转换毫秒
日期转换毫秒
SELECT TO_NUMBER(TO_DATE('2005-03-29 12:30:45', 'YYYY-MM-DD HH24:MI:SS') -
TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000
FROM DUAL;
毫秒转换日期
SELECT TO_CHAR(1112070645000 / (1000 * 60 * 60 * 24) +
TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS CDATE
FROM DUAL;
在Oracle中,默认没有直接提供获取当前时间的毫秒数的相关function,所以要想在SQL里面获得毫秒数,只好手动计算
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') current_date, (sysdate- to_date('1970-01-01','yyyy-mm-dd')) * 86400000 current_milli from dual;
CURRENT_DATE CURRENT_MILLI
——————- ————-
2009-01-06 14:00:09 1231250409000
--1000*60*60*24一天毫秒数 = 86400000
方法:
日期a- 日期b=相差天数.
一天毫秒数 = 1000*60*60*24(86400000)
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') current_date,(sysdate - to_date('1970-01-01','yyyy-MM-dd')) * 86400000 current_milli from dual;
select to_date('1970-01-01','yyyy-MM-dd')+1261674301000/86400000 from dual;
select to_date('1970-01-01','yyyy-MM-dd')+当前日期的毫秒数/86400000 from dual;
http://space.itpub.net/8554499/viewspace-659931
ORACLE中用SQL实现时间日期由毫秒数到字符串的转换
在开发过程中,为了方便,经常将时间日期的毫秒数以整形的格式存到数据库中,虽然方便了不同地方的处理,但也会增加些麻烦。比如,我要到数据库里直接看某个时间的值,都是一长串的数字,鬼都看不懂,想到看到该字段的值,还要写个转换程序,把毫秒数在转换成日期时间类型,或者拿个计算器来算。要查看的记录少,还能将就,如果多了,那不崩溃才怪呢。于是想到了在SQL里直接转换的方法,还好牛人多,在网上搜了一下,还真有相关的东西,原始的语句如下:
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') CURRENT_DATE, (SYSDATE- TO_DATE('1970-01-01','YYYY-MM-DD')) * 86400000 CURRENT_MILLI FROM DUAL;
这只是个例子,还不能直接解决上面的问题,所有就改了一下,是以自定义函数的形式存在的,代码如下:
CREATE OR REPLACE FUNCTION DATELONG2TEXT (PARAM IN LONG) RETURN VARCHAR2 AS
V_TEXT VARCHAR2(64);
BEGIN
SELECT TO_CHAR(TO_DATE('1970-01-01', 'YYYY-MM-DD')+(PARAM/(24*60*60*1000) + 8/24 - 1/86400),'YYYY-MM-DD HH24:MI:SS') INTO V_TEXT FROM DUAL;
RETURN V_TEXT;
END DATELONG2TEXT;
使用示例:
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'),SYSDATE,DATELONG2TEXT((SYSDATE - 8 / 24 - TO_DATE('1970-01-01', 'YYYY-MM-DD')) * 86400000) FROM DUAL;
说明:
1、加上 8/24 ,是因为时间格式是GMT,结果会受时区的影响,我们在东8区,所以要加上8个小时 ;
2、减1/86400,至于为什么,我也说不清楚,只是在实际当中确实多了1秒,只好以这种方式减去了,根据时间情况确定是否进行调整。
当然,我们也可以类似的写出将日期由字符串转换成毫秒数的函数。
http://hi.baidu.com/78347079/blog/item/14a05afd868d291f08244d15.html
- oracle 将Number型字段转为时间类型 将毫秒转为时间类型的
- oracle 将Number型字段转为时间类型 将毫秒转为时间类型
- oracle中将number类型毫秒值转为时间类型
- oracle中将number类型毫秒值转为时间类型
- oracle中将number类型毫秒值转为时间类型
- ios 将时间戳转为时间类型
- 将字符串时间转为毫秒值
- 将任意类型转为number类型
- 将字符转为时间戳类型 String->Timestamp
- Oracle 毫秒转为时间格式
- Flex 将毫秒转为时间(时、分、秒)
- Date对象之将时间转为毫秒数的方法对比
- 将BufferedImage转为指定的类型
- 将Long类型的毫秒数转换成时间格式
- 将string转为HtmlElement类型
- 将Entity转为Map类型
- 将时间戳转为字符串
- 将时间类型DateTime数据转换成毫秒Int型
- 苏打绿《你在烦恼什么》
- svn switch to mercurial
- SVN Windows 客户端TortoiseSVN 使用说明书
- linux-----acl 配置
- pku2478
- oracle 将Number型字段转为时间类型 将毫秒转为时间类型的
- oracle 热备份测试
- access2003 升級到 sql2008
- window和linux下sleep用法~
- 模式窗口取返回值
- 【时尚舞曲】小苏有朋遭禁播性感舞曲MV流出
- Linux 高级操作
- 动态内容缓存
- iframe和href中target属性的应用