我对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来获得第二天?
当然。如果您正在寻找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设置,可以使代码更加健壮,但是对于大多数系统而言,这将增加代码的复杂性,而这些复杂性将不再需要。