是否可以使用to_number(to_char())函数从一系列日期中排除所有周末?
例如,在我的表中有两个日期列,比如start和finish (格式为'06/06/2011 10:00:00 am'),我想估计finish-start的持续时间,不包括周六和周日。
发布于 2011-07-05 15:25:07
如果我理解正确的话,您想要计算两个日期之间的差异,但从结果范围中排除每个周末的2天。对吗?
如果这是您想要的,下面的代码应该在以下假设下工作:
基本上,这只是一个计算出日期范围内有多少个周末的问题。所以很明显每7天就有一个周末。然后我们只需检查该范围是否围绕一个周末,如果是,则再添加一个。
FUNCION dateDiff( dt_start DATE, dt_end DATE ) RETURN NUMBER
IS
raw_diff NUMBER;
weekends NUMBER;
BEGIN
raw_diff := dt_end - dt_start;
weekends := TRUNC( raw_diff / 7 );
IF( ( dt_start - TRUNC( dt_start, 'DAY' ) )
> ( dt_end - TRUNC( dt_end , 'DAY' ) ) )
THEN
weekends := weekends + 1;
END IF;
RETURN raw_diff - ( weekends * 2 );
END;
https://stackoverflow.com/questions/6553140
复制