Oracle中日期的差异

时间:2017-04-12 11:37:32

标签: sql oracle

我正在撰写以下查询

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”:标识符无效

data_elaborazione同样如此。 Data_elaborazioneDATA_INS_AGG_SDS都是varchar类型,其日期为varchar

1 个答案:

答案 0 :(得分:1)

您所获得的错误是由于您引用了不存在的双列上的列。您需要从它们实际存在的表中选择这些列。至于日期算术,它应该返回一个不需要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;