日期:2014-05-17  浏览次数:21080 次

两日期相减,得到一个毫秒数? 在线等
如mssql 是这样

datediff(ms,date1,date2)

这样就可以得到一个毫秒数,oracle有没有这样的函数呀?

------解决方案--------------------
oracle中两日期相减单位为天,如果需要得到毫秒可以乘上86400*1000
select (date2-date1)*86400*1000 from dual;
------解决方案--------------------
如果是把已经有的数据转换为毫秒,可以用计算公式做.
如果想知道数据库内两个时间差,要精确到毫秒,那么字段类型要是timestamp,如果是date型只能精确到秒.
------解决方案--------------------
oracle有两个日期型数据,分别是date与timestamp,其中date精确到秒,而timestamp才能精确到毫秒。楼主要算得毫秒级的差值,需要使用timestamp类型进行转换,然后计算差值。
SQL code

select (to_timestamp('2011-12-09 12:12:13.400','yyyy-mm-dd hh24:mi:ss.ff3') -
       to_timestamp('2011-12-09 12:12:12.300','yyyy-mm-dd hh24:mi:ss.ff3'))
from dual;
-- 上面得到的结果是timestamp类型,如果需要可以使用to_char与to_number将它转换成毫秒。

------解决方案--------------------
TIMESTAMP
------解决方案--------------------
探讨
谢谢楼上,我只好用 extract这个来分解了。

我还想问下 在 mssql中可以这样写

update t A
set aa=(SELECT top 1 AA FROM t where ID>A.ID ORDER BY aa)

在oracle中怎么不能用order by 呀
update t A
set aa=(select aa from t where id>a.id ……

------解决方案--------------------
探讨

谢谢楼上,我只好用 extract这个来分解了。

我还想问下 在 mssql中可以这样写

update t A
set aa=(SELECT top 1 AA FROM t where ID>A.ID ORDER BY aa)

在oracle中怎么不能用order by 呀
update t A
set aa=(select aa from t where id>a.id……

------解决方案--------------------
探讨

oracle有两个日期型数据,分别是date与timestamp,其中date精确到秒,而timestamp才能精确到毫秒。楼主要算得毫秒级的差值,需要使用timestamp类型进行转换,然后计算差值。
SQL code

select (to_timestamp('2011-12-09 12:12:13.400','yyyy-mm-dd hh24:mi:ss.ff3') -
……