检查oracle sql中的两个时间戳

时间:2017-03-01 06:48:52

标签: sql oracle timestamp

我正在尝试加入三个表格,我想获得货件ID,其中表2中的时间(发货的日期和时间)应小于表3。 Change_Date的格式为

select shipment_id from table1
left join table2 on table1.shipment_id=table2.shipment_id
left join table3 on table2.shipment_id=table3.shipment_id and table2.Code=table3.Code
where table2.change_date<table3.change_date

数据如下

表1

shipment_id
123456

表2

shipment_id--------------Change_Date-------------------------Code
123456------19-JAN-17 09.54.07.000000 AM----------------32
123456------19-JAN-17 10.54.07.000000 PM----------------51

表3

shipment_id--------------Change_Date-------------------------Code
123456------19-JAN-17 12.54.07.000000 PM----------------32
123456------19-JAN-17 07.54.07.000000 AM----------------32
123456------20-JAN-17 09.54.10.000000 AM----------------32

所以我需要输出为

shipemnt_id-------------Change_Date
123456--------19-JAN-17 12.54.07.000000 PM
123456--------20-JAN-17 09.54.10.000000 AM

请帮助

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的要求,您希望保留Table3中给定货件的记录,其中的更改日期更大,而不是{{1>}中出现的同一货件的最近更改日期{1}}。如果是,那么我们可以创建一个子查询,用于标识Table2中每个货件的最新更改日期,然后使用该子查询从Table2中删除我们不想在我们的结果集。

Table3