Sql 在我的例子中,如何在Oracle中将varchar2格式值转换为datetime类型?

Sql 在我的例子中,如何在Oracle中将varchar2格式值转换为datetime类型?,sql,oracle,datetime,Sql,Oracle,Datetime,我有以下格式的数据- Fri, May 13, 2016 at 10:54 PM 该值作为varchar2type插入 我想将其转换为datetime类型以插入另一列 这怎么可能呢?您可以使用正则表达式从文本字符串中提取日、月、年和时间,并使用to_date将其转换为日期: WITH your_table AS ( SELECT 'Fri, May 13, 2016 at 10:54 PM' text_date FROM DUAL ) SELECT TO_DATE(REGEXP_REPLA

我有以下格式的数据-

Fri, May 13, 2016 at 10:54 PM
该值作为
varchar2
type插入

我想将其转换为
datetime
类型以插入另一列


这怎么可能呢?

您可以使用正则表达式从文本字符串中提取日、月、年和时间,并使用
to_date
将其转换为日期:

WITH your_table AS (
  SELECT 'Fri, May 13, 2016 at 10:54 PM' text_date FROM DUAL
)
SELECT TO_DATE(REGEXP_REPLACE(text_date, '(\w{3}), (\w{3}) (\d{1,2}), (\d{4}) at (\d{1,2}:\d{2}) (AM|PM)','\3-\2-\4 \5 \6'),'DD-MON-YYYY HH:MI AM') adate
FROM your_table

您根本不需要正则表达式:

WITH your_table AS (
  SELECT 'Fri, May 13, 2016 at 10:54 PM' text_date FROM DUAL
)
SELECT
    TO_DATE(text_date, 'DY, Mon DD, YYYY "at" HH:MI AM', 'NLS_DATE_LANGUAGE = ENGLISH') adate
FROM your_table

使用具有适当格式的to_date函数使用此to_date(“2016年5月20日星期五上午6:36”,“星期一、星期一、星期一、星期日上午8:36”)但不起作用。谢谢,这是对
regex
Awesome:)的非常好的使用,需要检查所有值