Oracle SQL - Trying to Add One Second to a Date I'm pulling from a text field

让人想犯罪 __ 提交于 2019-12-24 21:53:20

问题


SQL newbie here.

In Oracle BI Publisher, I'm using Oracle SQL to do the following.

I need to pull only the time from a string and add one second to the time. The data in the 'Flight' column looks like this:

Dayton 01:23:59

I pull only the time using the following syntax:

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

Which gives me this:

01:23:59

In the messy code below, I'm trying to add one second to the time which works but the second is '60' which is obviously is an invalid time.

 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)

Any ideas for a better way to do this?

Dan


回答1:


Can you do something like:

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



回答2:


You can also use

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

or

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

because

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

After a while you find you've memorized numbers like that. :-)



来源:https://stackoverflow.com/questions/51527397/oracle-sql-trying-to-add-one-second-to-a-date-im-pulling-from-a-text-field

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!