Sql 将时间戳varchar2转换为日期数据类型

Sql 将时间戳varchar2转换为日期数据类型,sql,oracle,Sql,Oracle,我需要帮助将时间戳转换为varchar2数据类型 示例(如varchar2所示): 2015年3月29日星期日美国东部时间10:25:29 我需要将其转换为如下格式的date数据类型: 2015年4月29日 有什么建议吗? 谢谢假设您的日期字符串保持您的示例所建议的严格格式,类似这样的方式可能会奏效: declare s varchar2(32) := 'Sun Mar 29 10:25:29 EDT 2015'; s_mdy varchar2(32); d date; begin

我需要帮助将时间戳转换为
varchar2
数据类型

示例(如varchar2所示):

2015年3月29日星期日美国东部时间10:25:29

我需要将其转换为如下格式的
date
数据类型:

2015年4月29日

有什么建议吗?
谢谢

假设您的日期字符串保持您的示例所建议的严格格式,类似这样的方式可能会奏效:

declare
  s varchar2(32) := 'Sun Mar 29 10:25:29 EDT 2015';
  s_mdy varchar2(32);
  d date;
begin
  dbms_output.put_line(s);
  s_mdy := substr(s,5,6) || substr(s,24);
  dbms_output.put_line(s_mdy);
  d := to_date(s_mdy, 'MON DD YYYY');
  dbms_output.put_line(to_char(d, 'MM/DD/YYYY'));
end;
/
输出:

Sun Mar 29 10:25:29 EDT 2015
Mar 29 2015
03/29/2015

PL/SQL不是必需的。首先使用
to_timestamp_tz
将字符串转换为带时区的Oracle
时间戳
数据类型。然后使用
to_char
将数据类型的值转换为类似的文本表示形式:

-- edited for readability
SQL> select to_char(to_timestamp_tz('Sun Mar 29 10:25:29 EDT 2015',
                                    'DY MON DD HH24:MI:SS TZD YYYY'),
                    'MM/DD/YYYY') from dual;

TO_CHAR(TO
----------
03/29/2015

SQL>
Oracle文档:


感谢您的回答,这解决了我的问题!!它与我的查询配合得很好!上述答案解决了我的问题。谢谢你的建议,我也会试试的。