甲骨文的SQL - 尝试一秒添加到一个日期,我从一个文本字段拉(Oracle SQL - Tryi

2019-10-29 08:58发布

SQL新手在这里。

在Oracle BI Publisher中,我使用的Oracle SQL做到以下几点。

我需要从一个字符串仅拉出的时间和至少一个第二添加到时间。 在“飞行”列中的数据是这样的:

Dayton 01:23:59

我拉只有使用下面的语法的时间:

substr(Flight,length(Flight)-8,8)

这给了我这样的:

01:23:59

在下面的乱码,我想一秒钟添加到其工作,但第二个是“60”,这显然是一个无效的时间。

 substr(lpad(to_number(replace(substr(Flight,length(Flight)-15,9),':')+2,'999999'),6,'0'),1,2)||':'||substr(lpad(to_number(replace(substr(Flight,length(Flight)-15,9),':')+2,'999999'),6,'0'),3,2)||':'||substr(lpad(to_number(replace(substr(Flight,length(Flight)-15,9),':')+2,'999999'),6,'0'),5,2)

更好的方法任何想法做到这一点?

Answer 1:

你可以这样做:

 to_date(substr(Flight,length(Flight)-8,8), HH:MI:SS') + interval '1' second


Answer 2:

您还可以使用

TO_DATE(SUBSTR(FLIGHT, LENGTH(FLIGHT-8)), 'HH24:MI:SS') + 1 / (24 * 60 * 60)

要么

TO_DATE(SUBSTR(FLIGHT, LENGTH(FLIGHT-8)), 'HH24:MI:SS') + 1 / 86400

因为

   24 = hours in a day
 * 60 = minutes in an hour
 * 60 = seconds in a minute
-----
86400 = seconds in a day

过了一会儿,你发现你已经记住的数字那样。 :-)



文章来源: Oracle SQL - Trying to Add One Second to a Date I'm pulling from a text field