sql中使用了sybase函数datediff(),导致在oracle中执行错误 对该函数进行替换trunc(END_DATE - START_DATE)

你会用这个trunc函数吗?

条件改成这个就可以了oracle 中直接两个日期相减就是天数
where pubilsh_date - to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')>7追问

where (pubilsh_date - to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')>7) ; 这一句为啥错误(7,90): PL/SQL: ORA-00907: 缺失右括号呢?
update COLUMNS
这句提示错误(3,3): PL/SQL: SQL Statement ignored

追答

你直接两个日期相减就可以了 你确定publish_date是时间类型的
sysdate-pubilsh_date 或者 pubilsh_date-sysdate
你可以先查询下看看是不是你所还要的结果

select *from 表 where sdate-pubilsh_date>7

追问

PUBLISH_DATE TIMESTAMP(6) Yes (null) 4 (null) 这个是字段
select *from COLUMN__CONTENTS where (Sysdate-PUBLISH_DATE>7)
SQL 错误: ORA-00932: 数据类型不一致: 应为 INTERVAL DAY TO SECOND, 但却获得 NUMBER

追答

你先这样select to_date(PUBLISH_DATE,'yyyy-mm-dd') from 表
你可以列出一笔PUBLISH_DATE的数据吗?看是不是时间类型的

追问

select to_date(PUBLISH_DATE,'yyyy-mm-dd') from COLUMN__CONTENTS
SQL 错误: ORA-01861: 文字与格式字符串不匹配
为啥咧?我在类中时这样定义的
private Date publishDate;

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考