我如何在oracle中使用date diff。我不需要几天,我怎么能实现这一目标

时间:2016-08-17 11:15:15

标签: sql oracle

我有这样的表。我需要使用date diff im new to oracle。我怎么能在甲骨文中找不到任何日子。

的Sql

SELECT * FROM TICKETS WHERE SUBMITTED_ON-1

门票表

TICKET_ID |SUBJECT                     |CHANGE_TYPE |PRIORITY |SUBMITTED_ON        
----------|----------------------------|------------|---------|--------------------
343       |Test CR child 123           |4           |4        |2015-06-11 08:24:17 
345       |New test today              |2           |3        |2015-06-11 08:45:16 
352       |CR for child ticket purpose |2           |4        |2015-06-15 04:53:26 

如何在没有天数的情况下找到SUBMITTED_ON - CURRENT DATE之间的日期差异?

我怎样才能实现这个目标?

3 个答案:

答案 0 :(得分:3)

您可以在Oracle中减去两个日期,答案就是它们之间的差异,以天为单位。因此,1.5将是1.5天(或36小时)。

例如,你可以写

SELECT * FROM TICKETS WHERE SUBMITTED_ON >= TRUNC(SYSDATE)-1

它会在昨天开始时或之后提供所有提交的门票,因为TRUNC(SYSDATE)是当天的开始,TRUNC(SYSDATE)-1是昨天的开始。

要获得每张票的年龄,请写

SELECT SYSDATE - SUBMITTED_ON FROM TICKETS

round()那个或trunc()或保留原样,具体取决于你想要对部分日做些什么。

答案 1 :(得分:1)

您可以减去它们并使用trunc()删除时间组件。根据您的需要,这可以是:

SELECT t.*,
       TRUNC(sysdate) - TRUNC(submitted_on)
FROM TICKETS t;

或:

SELECT t.*,
       TRUNC(sysdate - submitted_on)
FROM TICKETS t;

注意:这似乎是您问题的答案。但是如果你想测试WHERE条款中的值,那么马修的答案是最好的方法。

答案 2 :(得分:0)

试试这个:

select trunc(SUBMITTED_ON)-trunc(SYSDATE) noofdays from TICKETS