差异日期在甲骨文
问题描述:
我写了下面的查询差异日期在甲骨文
SELECT
TO_CHAR(TO_DATE(data_elaborazione, 'YYYYMMDD') -
TO_DATE(DATA_INS_AGG_SDS, 'YYYYMMDD'))AS DateDiff
FROM
dual
我要计算两个日期之间的差别,但我得到一个错误:
ORA-00904: "DATA_INS_AGG_SDS": invalid identifier
同也为data_elaborazione
。 Data_elaborazione
,DATA_INS_AGG_SDS
是包含日期为varchar
答
你所得到的错误是你引用不存在的双列原因都varchar
类型。您需要从实际存在的表中选择这些列。至于日期算术,它应该返回一个数字,不需要显示TO_CHAR,除非您有一些特定的格式问题。这是一个日期算术的例子。第二个日期值具有时间分量。因此,两列由于日期算术而显示结果,第二列基本上向下舍入以获得偶数整数值的天数。
请阅读关于数据类型的评论。您应该始终使用正确数据类型的值。避免将任何日期或数字作为字符串存储在数据库中。
-- start test_data
with some_data(begin_date, end_date) as
(select to_date('02/15/2017','MM/DD/YYYY'), to_date('04/03/2017 09:34:12','MM/DD/YYYY HH24:MI:SS') from dual)
-- end test data
select end_date - begin_date as num_days_diff_w_time,
FLOOR(end_date - begin_date) as num_days_diff_wo_time
from some_data;
'dual'没有这些列。 –
@WernfriedDomscheit因为我正在使用的表的日期为字符串。不要问为什么我连我都不知道为什么。 –
@dimmik,数据的存储方式与您尝试的数学无关。如果你想要一个datediff,你需要两个日期,而不是一个日期和一个字符串。 –