Sql 如何知道2个日期之间的it是否已超过5天-Oracle 10g?

Sql 如何知道2个日期之间的it是否已超过5天-Oracle 10g?,sql,oracle,oracle10g,date,Sql,Oracle,Oracle10g,Date,我有两个约会: 1 01/05/2009 2 06/05/2009 我怎么知道它们之间是否有5天的间隔呢?首先,将日期转换为变量。然后,您可以使用简单的加法来确定所需的天数是否已经过去,因为Oracle将日期的加减处理为加减天数 例如Date1,+5将等于日期加上5天 在PL/SQL中,您的块可能最终看起来像这样: declare date1 date := to_date('01/05/2009', 'DD/MM/YYYY'); date2 date := to_date('06/05

我有两个约会:

1 01/05/2009 2 06/05/2009


我怎么知道它们之间是否有5天的间隔呢?

首先,将日期转换为变量。然后,您可以使用简单的加法来确定所需的天数是否已经过去,因为Oracle将日期的加减处理为加减天数

例如Date1,+5将等于日期加上5天

在PL/SQL中,您的块可能最终看起来像这样:

declare
  date1 date := to_date('01/05/2009', 'DD/MM/YYYY');
  date2 date := to_date('06/05/2009', 'DD/MM/YYYY');
begin
  if date1 + 5 >= date2 then
    dbms_output.putline('Date 2 is more than five or more days past date 1!');
  else
    dbms_output.putline('There is less than five days between date 1 and date 2!');
  end if;
end;

您可以减去两个日期,得到它们之间的天数差。Oracle中日期列的单位为1天

在您的示例中,我假设日期以DD/MM/YYYY格式拼写。所以你可以这样做:

select case when
    abs(to_date('01/05/2009','DD/MM/YYYY') - to_date('06/05/2009','DD/MM/YYYY')) = 5
  then 'YES'
  else 'NO'
  end as ARE_DATES_5_DAYS_APART
from
  dual;

如果两个日期是表中的两列,则在上面的查询中使用表名而不是双精度。

首先确定您的日期格式是DD/MM/YYYY还是MM/DD/YYYY

谢谢您的帮助,我如何运行我的表,并检查第1行中的日期和第2行中的日期是否存在这种情况,介于第2行和第3行之间的5天……以及第4行和第5行……等等……您可以使用window子句来执行此操作,例如,从mytable中选择ABSmydatecolumn-LEADmydatecolumn,1 over ORDER BY myorderby;