首页 > 解决方案 > 如何比较Oracle中不同表中的日期

问题描述

我正在尝试比较我的数据库中的两个表。其中一张表(名为 ORDERED)有一个名为 OREDERDATE 的字段。另一个表(名为 ORDERLINE)有一个名为 DATESUPPLIED 的字段。

我想运行一个 SQL 查询来返回两个日期之间的天数差。

到目前为止,我已经尝试了一些事情(例如......

SELECT ordered.ordernumber, ordered.orderdate, orderline.datesupplied, 
       customer.customernumber,
       LEAD (orderdate) OVER (partition by customernumber 
                              ORDER BY customernumber) - datesupplied DIFF_DAYS
FROM   ordered, orderline;

) ...但无济于事。

请协助。我的 ERD 如下 在此处输入图像描述

标签: sqloracle

解决方案


我想你想要这样的东西:

select ol.ordernumber, ol.productcode,
       trunc(ol.datesupplied) - trunc(o.orderdate) as days_difference
from   orderline ol join ordered o on ol.ordernumber = o.ordernumber
;

这将仅显示订单号和产品代码(因此与第二个表中的行完全对应)以及供应日期和订购日期之间的天差。trunc()需要将时间截断到午夜,因为这是你说你需要的。

如果您需要任一表中的其他列,请将它们添加到select子句中。如果您必须过滤结果(例如,仅查找特定订单,或在给定日期之前或之后的订单等),请添加一个where子句。如果您需要以某种方式对结果进行排序,请添加一个order by子句。


推荐阅读