比较SQL DATE与NUMBER

| 我正在使用以下SQL语句,似乎无法正确获取语法:
idSelectQuery=Select \"numberprgn\" 
              from \"SMT1\".\"CM3R1M1\" 
              where \"category\" != \'KM Document\' 
          AND (\"sysmodtime\" - TO_DATE(\'1970-01-01\', \'YYYY-MM-DD\')) * 86400000 > ?
其中\'?\'是当前系统时间,以数字表示-实际上是纪元时间。 该语句失败的原因是:   ORA-00932:数据类型不一致:预期的编号是DATE 我需要能够将sysmodtime与?时间值,尽管我无法找到正确执行此操作的方法...我不确定是否可以将sysmodtime转换为char然后转换为数字,因为我知道无法将日期直接转换为数字。 任何人有任何建议使它工作? 谢谢     
已邀请:
我怀疑你想要
\"sysmodtime\" > TO_DATE(\'1970-01-01\', \'YYYY-MM-DD\') + (?/ 86400000)
假如说 ?表示自1970年1月1日以来的毫秒数。以这种方式编写查询可以在\“ sysmodtime \”上使用索引。 现在,实际上,您可能想要创建一个函数,该函数需要一个数字时间并将其转换为日期,即
CREATE FUNCTION epoch_to_date( p_epoch IN NUMBER )
  RETURN DATE
IS
BEGIN
  RETURN TO_DATE(\'1970-01-01\', \'YYYY-MM-DD\') + (p_epoch/ 86400000);
END;
您可以在查询中调用
\"sysmodtime\" > epoch_to_date( ? )
    

要回复问题请先登录注册