使用cast函数。
create table t(d date,ts timestamp);
insert into t values(sysdate, systimestamp)
要确定nls_date_format的格式是你想要的,如果不确定,可以执行以下语句
alter session set nls_date_format = 'dd-mm-yyyy hh24:mi:ss';
下面的语句可以看到在显示上已经成功实现了转化,
select cast(ts as date) from t)
其实在数据类型上也实现了,以下语句成功执行,可以证明
insert into t(d) (select cast(ts as date) from twhere rownum = 1)
DATE
包含 世纪、年、月、日、时、分、秒。
占用7个字节,上面每个部分1个字节
TIMESTAMP 日期时间 可以包含到小数秒
TIMESTAMP WITH TIME ZONE 包含时区信息
TIMESTAMP WITH LOCAL TIME ZONE包含时区信息,自动调整
从上面看来,你的这个数据类型, 可以选择 TIMESTAMP
至于如何获取数据, 可以:
SQL> SELECT
2 SESSIONTIMEZONE,
3 CURRENT_TIMESTAMP
4 FROM
5 DUAL;
SESSIONTIMEZONE
----------------------------------------
CURRENT_TIMESTAMP
----------------------------------------
-05:00
14-6月 -11 072834296000 上午 -05:00
也可以
SQL> SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;
CURRENT_TIMESTAMP
---------------------------------------------------------
LOCALTIMESTAMP
---------------------------------------------------------
14-6月 -11 090932609000 下午 +08:00
14-6月 -11 090932609000 下午
获取网络时间的方法如下
1、以XP系统为例,在电脑连接互联网的状态下,电脑桌面右下角鼠标双击时间,d出”日我和时间 属性“窗口,点击”Internet 时间“,在它的界面点击”立即更新“
2、上面点击之后,出现”请等待,Windows正在同步 timewindowscom“,
3、如果显示更新成功,则当前时间就是网络时间了;如果更新不成功,关闭上面窗口,过几分钟再打开,点击”服务器“右边三角符号,下拉框中选择”timenistgov“,然后点击”立即更新“
4、下面是成功更新后的显示,多次实践证明,更改服务器后更容易成功同步时间,其它 *** 作系统方法类似。
1、获得时间差毫秒数:
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) 24 60 60 1000) 相差豪秒数 FROM DUAL;
相差豪秒数
----------
86401000
2、获得相差秒数:
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) 24 60 60) 相差秒数 FROM DUAL;
相差秒数
----------
86401
3、获得相差分钟数、小时数,以此类推,默认时间相减获得相差的天数
4、获得相差的月份数
select (EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd'))) 12 +
EXTRACT(month FROM to_date('2008-05-01','yyyy-mm-dd')) - EXTRACT(month FROM to_date('2008-04-30','yyyy-mm-dd')) months
from dual;
MONTHS
----------
13
这里可以直接使用months_between函数
5、获得相差的年份
select EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd')) years from dual;
YEARS
----------
1
SQL> select sysdate,systimestamp from dual;
SYSDATE
-------------------
SYSTIMESTAMP
---------------------------------------------------------------------------
2013-06-27 12:49:21
27-6月 -13 124921723000 下午 +08:00
SQL> insert into a values(sysdate);
已创建 1 行。
SQL> insert into a values(systimestamp);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select from a;
ID
--------------------------------------------------------------------
27-6月 -13 124522000000 下午
27-6月 -13 125015511000 下午
个人猜测你插入表中的数据是按Insert into a values(sysdate);sysdate微秒都是0 最好以systimestamp插入。
以上就是关于oracle里面 请问时间里面有毫秒,yyyy-mm-dd 24hh:mi:ff:ms 我该怎么写语句更新这个时间全部的内容,包括:oracle里面 请问时间里面有毫秒,yyyy-mm-dd 24hh:mi:ff:ms 我该怎么写语句更新这个时间、oracle 毫秒字段问题。。。、oracle如何能够获取网络时间校准等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)