0

我正在尝试使用以下查询将 varchar 转换为时间戳。

select staging.revival_date ,
   case when staging.revival_date <> 'Unknown' 
        then  
             TO_TIMESTAMP(
                          to_char(staging.revival_date,'dd-MON-YY') 
                          ||
                          '00:00', 'dd-MM-YY HH24:MI'
                         )  
       else null 
   end 
revival_on 
from stg_avg_gen_plant_outage staging

revival_date : varchar2

但它给了我这样的错误:Invalid number

出了什么问题?

4

1 回答 1

2
  1. revival_date是一个 varchar (因为有时它显然可以包含“未知”,所以在它上面使用是没有意义的to_char()

  2. 当您转换为时间戳时,格式必须与存储为字符串的日期匹配。在您的情况下,您正在尝试以 'dd-MON-YYHH24:MI' 格式制作一些东西(日期和时间组件之间没有空格)并告诉to_timestamp期望格式为 'dd-MM-YY HH24:MI '。所以你需要

    1. 确保数据和时间组件之间确实存在空格,并且

    2. 使“月”组件匹配。

于 2013-05-06T14:03:05.677 回答