首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle:从日期时间中减去毫秒

Oracle:从日期时间中减去毫秒
EN

Stack Overflow用户
提问于 2012-08-10 19:11:32
回答 3查看 28.2K关注 0票数 22

我认为这真的很简单,但事实并非如此。

代码语言:javascript
复制
SELECT TO_TIMESTAMP('10/08/2012','DD/MM/YYYY') 
          - 1/(24*50*60*1000) data 
FROM dual;

它根本不起作用。

其他详细信息:

代码语言:javascript
复制
SELECT TO_TIMESTAMP('10/08/2012','DD/MM/YYYY') -
           NUMTODSINTERVAL(1/(24*50*60*1000),'HOUR') data 
FROM dual;

不起作用..

右翼似乎是

代码语言:javascript
复制
SELECT TO_TIMESTAMP('10/08/2012','DD/MM/YYYY') -
           NUMTODSINTERVAL(1/(24*25*60*1000),'HOUR') data 
FROM dual;

为什么?它怎麽工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-07 08:23:27

要增加或减少以文字表示的时间量,可以使用INTERVAL。

代码语言:javascript
复制
SELECT TO_TIMESTAMP('10/08/2012','DD/MM/YYYY')
     - INTERVAL '0.001' SECOND 
FROM dual;

此外,现在有一些标准的方法来表达日期和时间文字,并避免使用各种特定于数据库的转换函数。

代码语言:javascript
复制
SELECT TIMESTAMP '2012-10-08 00:00:00' 
   - INTERVAL '0.001' SECOND DATA
FROM dual;

对于你的原始问题,一天中的时间部分是以小数天存储的。所以一秒钟是:

代码语言:javascript
复制
1 / (hours in day * minutes in hour * seconds in a minute)

除以1000得到毫秒。

代码语言:javascript
复制
1 / (24 * 60 * 60 * 1000)
票数 30
EN

Stack Overflow用户

发布于 2012-09-06 20:44:07

这是正确的(1毫秒等于1000秒):-

代码语言:javascript
复制
SELECT TO_TIMESTAMP('10/08/2012','DD/MM/YYYY') - NUMTODSINTERVAL(1/1000,'SECOND') data FROM dual;


DATA
-----------------------------
09-AUG-12 23.59.59.999000000

至于为什么其他代码不能工作,那是因为你没有正确计算一毫秒。小时必须除以60表示分钟,再除以60表示给定的秒,然后除以1000表示毫秒,因此,如果您必须使用小时作为间隔,则它是:-

代码语言:javascript
复制
SELECT TO_TIMESTAMP('10/08/2012','DD/MM/YYYY') - NUMTODSINTERVAL(1/(60*60*1000),'HOUR') as data FROM dual;

DATA
---------------------------------------------------------------------------
09-AUG-12 23.59.59.999000000
票数 7
EN

Stack Overflow用户

发布于 2012-09-06 21:57:03

代码语言:javascript
复制
select TO_CHAR(TO_TIMESTAMP('10.05.2012', 'DD.MM.YYYY') - 
       NUMTODSINTERVAL(1/1000, 'SECOND'), 'DD.MM.YYYY HH24:MI:SS:FF3')  Res 
  from dual;

RES
-----------------------------
09.05.2012 23:59:59.999
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11900470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档