sql - Oracle SQL Developer 显示以下代码的无效编号

标签 sql oracle

我正在尝试减去将“systimestamp”保存为日期和时间值的两列。我得到了

'ORA-01722: invalid number'

作为错误消息。如果有人可以提供帮助,将会有很大帮助。

我尝试用谷歌搜索这个错误,它说字符串可能不是有效的文字。它适用于其他记录,唯一的问题是当我尝试减去它时。

SELECT ETL_BATCH_ID,
       ETL_BATCH_GROUP_NAME,
       TO_CHAR(BATCH_START_TS,'DD-MON-YY')
       || ' '
       ||TO_CHAR(BATCH_START_TS,'HH24:MI:SS') "BATCH_START_TS",
       TO_CHAR(DW_DM_END_TS ,'DD-MON-YY')
       ||' '
       ||TO_CHAR(DW_DM_END_TS , 'HH24:MI:SS') "DW_DM_END_TS" , 
       (TO_CHAR(DW_DM_END_TS , 'HH24:MI:SS')) - (TO_CHAR(BATCH_START_TS,'HH24:MI:SS')) "COMPLETION_TIME"              
FROM   bi_etl.bi_etl_batch
WHERE ETL_BATCH_GROUP_NAME = 'CMD';

例如,

BATCH_START_TS    || DW_DM_END_TS     || COMPLETION_TIME 
01-OCT-19 3:18:00 ||01-OCT-19 3:20:00 || 00:02:00         

因此完成时间为 (DW_DM_END_TS) - (BATCH_START_TS) = COMPLETION_TIME 但它抛出了如上所示的特定错误

最佳答案

直接对这些时间戳值应用减法:

select DW_DM_END_TS - BATCH_START_TS as "COMPLETION_TIME"              
  from bi_etl_batch;

COMPLETION_TIME
-000000000 00:02:00.000000

Demo

两个字符串类型值之间不可能进行减法,并且没有任何意义。

关于sql - Oracle SQL Developer 显示以下代码的无效编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58182244/

相关文章:

oracle - 您如何获得 Oracle 中的最大可能日期?

Java JDBC 执行过程

java - 一张表的并发更新和删除

Oracle DBMS_PIPE 无法正常工作

javascript - Sequelize 。如何在创建中使用不同的参数值

sql - Dynamics AX 2012 SQL 提取基本枚举值

php - 服务器中的图像未出现在 WordPress 媒体库中

sql - 内部联接会允许重复吗?

sql - 如何获取 Oracle 数据库中的所有序列?

c# - 显示数据的 GridView