Oracle:帮助拆分复杂的日期字符串

时间:2016-09-20 16:47:26

标签: string oracle date

我从csv文件中读取了一个复杂的日期字符串。 Oracle的TO_DATE函数无法处理该格式。寻找一种有效的方法来分解这个字符串并返回一个日期对象,以插入到DATE列中。建议使用TO_DATE与DD-MON-YY HH.MI.SS AM'不起作用。没有变化会破坏这个特定的字符串。因此需要自定义功能。我也试过过&HH.MI.SS.SSSSS AM'格式也不起作用。我发现如果我放弃小数秒,它就会起作用。如果我运行正则表达式来删除该部分,它应该按预期转换。

字符串格式为:21-OCT-04 01.03.23.966000 PM

我最初的想法是首先按空格分解,产生三个子字符串。 然后将第一个子字符串 - 和第二个字符串依次打开。,并将生成的部分直接加载到DATE对象中。

我可以使用更好的方法吗?

谢谢Allan

1 个答案:

答案 0 :(得分:4)

使用您拥有的内容(时间戳文字)来创建时间戳,然后将其转换为"作为日期":

select 
  cast(to_timestamp('21-OCT-04 01.03.23.966000 PM', 'dd-MON-rr hh.mi.ss.ff AM') as date) dt
from dual;

DT
----------------------
2004/10/21 01:03:23 PM

(输出格式取决于我的特定会话NLS_DATE_FORMAT,我将此插图实际更改为'yyyy/mm/dd hh:mi:ss AM'。)