【发布时间】:2020-06-10 16:07:25
【问题描述】:
我试图减去两个日期并得到一个integer 值作为回报。我似乎遇到了障碍,因为两个日期之一为空,随后返回错误。有什么解决方法吗,如果 review_date 为空,我渴望得到aging_date。
select to_date(sysdate)aging_date,to_char(review_date,'MM/DD/YYYY')review_date
from mytable
aging_date review_date
2/26/2020 01/05/2020
2/26/2020 05/15/2018
2/26/2020
2/26/2020 03/14/2019
2/26/2020 12/17/2019
select aging_date,review_date,(aging_date - review_date)actual_date from
(
select
to_date(sysdate)aging_date,to_char(review_date,'MM/DD/YYYY')review_date,
(aging_date - review_date)actual_date from mytable
)new
ORA 01722: Invalid Number
【问题讨论】:
-
@TDuong,问题是 review_date 列中有
NULL。 -
SYSDATE 是一个日期,因此不需要
to_date()转换。同样,根据您的评论, REVIEW_DATE 显然是一个字符串,因此不需要to_char()转换。如果您刚刚发布了mytable的 DDL(或它的编辑测试用例版本),这不是更简单,更不会让所有人感到困惑吗? -
但是
sysdate不返回时间戳数据类型吗? -
@JakeWagner - 否:"The data type of the returned value is DATE"。但即使你有一个时间戳——比如来自
systimestamp——你也不会使用to_date()来转换它,你会用cast()它。