我有这样的表。我需要使用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之间的日期差异?
我怎样才能实现这个目标?
答案 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