我有一个varchar2'Printed 4/21/2014 3:00:00 AM',并且只想获取'4/21/2014 3:00:00 AM'作为日期。 我的想法是使用类似的东西:
我有:REGEXP_SUBSTR('2014年4月21日打印3:00:00','[0-9 /:APM] * $') 结果在:2014/4/21 3:00:00
但是,
选择 to_date(REGEXP_SUBSTR('2014年4月21日打印3:00:00','[0-9 /:APM] * $'),'YYYY-MM-DD HH24:MI:SS') 从双重;
导致“无效月份”错误。
建议?
答案 0 :(得分:1)
问题: 由mathguy正确识别-日期格式
我认为我真的不需要时间戳,因此:
选择 to_date(REGEXP_SUBSTR('打印4/21/2014','[0-9 /] * $'),'MM / DD / YYYY') 从双重;
工作正常。
答案 1 :(得分:0)
如果格式是固定的-包括您要忽略的文本-那么您可以将整个字符串转换为日期或时间戳,而无需使用正则表达式或子字符串:
select to_date('Printed 4/21/2014 3:00:00 AM', '"Printed" MM/DD/YYYY HH:MI:SS AM') as result
from dual;
RESULT
-------------------
2014-04-21 03:00:00
通过在格式模型内用双引号将该部分括起来,将固定的“印刷”部分视为a character literal。
如果您真的对时间不感兴趣,则可以在以后删除它:
select trunc(to_date('Printed 4/21/2014 3:00:00 AM', '"Printed" MM/DD/YYYY HH:MI:SS AM')) as result
from dual;
RESULT
-------------------
2014-04-21 00:00:00