我试图找出Oracle中的DateAdd()等价物,实际上是同一个表中2列之间的秒数差异:
SELECT
DISTINCT p.packet_id,
p.launch_dt,
r.route_duration,
s.completion_date,
DATEADD(SS, r.route_duration, p.launch_dt) AS tempDate
FROM
tdc_arc_apprpkt_def p
JOIN tdc_arc_inpr_route_def r
ON p.packet_id = r.packet_id
JOIN tdc_arc_inpr_route_step_detai s
ON p.packet_id = s.packet_id
AND s.completion_date > DATEADD(SS, r.route_duration, p.launch_dt)
非常感谢任何帮助!
答案 0 :(得分:1)
如果我理解正确,您想将r.route_duration
秒添加到p.launch_dt
?在这种情况下,表达式为:
p.launch_dt + (r.route_duration/24/60/60)
Oracle DATE算法在几天内工作,因此24,60和60的除法将route_duration值从秒转换为几天。
答案 1 :(得分:1)
除了能够使用Tony演示的几天内进行日期算术,假设您使用9i或更高版本,您还可以使用区间函数(或者更好的是,将ROUTE_DURATION
列定义为interval)并为日期添加间隔。在你的情况下,你可以做
p.launch_dt + numtodsinterval( r.route_duration, 'SECOND' )
将route_duration
秒添加到launch_dt
。
如果您要将route_duration
列定义为INTERVAL DAY TO SECOND
而不是NUMBER
,则只需将其添加到日期
p.launch_dt + r.route_duration