温馨提示:本文翻译自stackoverflow.com,查看原文请点击:sql - Interval between two Dates
database date oracle sql

sql - 两个日期之间的间隔

发布于 2020-04-06 00:34:54

我对Oracle中的日期有一些疑问。

是否可以获取两种DATE类型之间的间隔(以天为单位)?如果是,是否可以在此间隔的每一天进行声明(例如插入)?

我想过

while (a_sequence != difference_between_dates) 
LOOP 
a_sequence.next 
-- do things
END LOOP;

是否有可能获得具有周期性间隔的间隔?(例如,像每个周末一样。Oracle中是否有模运算符?)例如,我考虑if(a_sequence % 6 || a_sequence % 7)将条件作为仅在周末执行操作的条件(假设较低的日期始终是星期一)。

是否可以执行my_date + 1来获得第二天?

查看更多

提问者
Csi
被浏览
110
Justin Cave 2015-05-25 19:14

当然。如果您正在寻找PL / SQL解决方案(您可以在纯SQL中完成此操作,但可能很难阅读),例如

DECLARE
  l_first_date date := date '2015-01-01';
  l_last_date  date := date '2015-12-31';
  l_date_to_check date;
BEGIN
  FOR i IN 1 .. l_last_date - l_first_date
  LOOP
    l_date_to_check := l_first_date + i;
    if( to_char( l_date_to_check, 'DY' ) IN ('SAT', 'SUN') )
    then
      <<do_something>>
    end if;
  END LOOP;
END;

假设您的数据库使用的是英语语言环境(显然,不同的语言几天都有不同的缩写)。通过在to_char函数中指定所需的NLS设置,可以使代码更加健壮,但是对于大多数系统而言,这将增加代码的复杂性,而这些复杂性将不再需要。