将timestamp varchar2转换为date数据类型

时间:2015-04-07 00:09:27

标签: sql oracle

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

示例(作为varchar2):

  

2015年3月29日星期日10:25:29

我需要将它转换为date数据类型,如以下格式:

  

2015年4月29日

有什么建议吗? 感谢

2 个答案:

答案 0 :(得分:0)

假设您的日期字符串保持您的示例建议的严格格式,这样的事情可能会起作用:

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

答案 1 :(得分:0)

不需要PL / SQL。首先使用to_timestamp_tz将字符串转换为Oracle timestamp with time zone数据类型。然后使用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文档: