我正在尝试使用以下查询将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
出了什么问题?
答案 0 :(得分:2)
revival_date
是一个varchar(因为有时它显然可能包含'未知',因此在其上使用to_char()
毫无意义。
转换为时间戳时,格式必须与存储为字符串的日期相匹配。在你的情况下,你试图用'dd-MON-YYHH24:MI'格式(没有日期和时间组件之间的空格)并告诉to_timestamp
期望字符串格式为'dd-MM' -YY HH24:MI'。所以你需要
确保数据和时间组件之间确实存在空格,并且
使“月份”组件匹配。