Plsql 用于周末排除的oracle pl/sql:datepart()函数

Plsql 用于周末排除的oracle pl/sql:datepart()函数,plsql,Plsql,我可以使用to_number(to_char())函数将所有周末从日期范围中排除吗 例如,我的表中有两个日期列,例如开始和结束(格式为'06/06/2011 10:00:00 am'),我想估计完成开始的持续时间,不包括周六和周日 如果我没弄错的话,您希望计算两个日期之间的差值,但不包括结果范围内每个周末的2天。对吗 如果这是您想要的,则以下代码应符合以下假设: 我想开始和结束不会在周末 我并不是在确认结束早于开始 基本上,这只是计算出约会范围内有多少个周末的问题。很明显,每7天有一个周末。

我可以使用to_number(to_char())函数将所有周末从日期范围中排除吗


例如,我的表中有两个日期列,例如开始和结束(格式为'06/06/2011 10:00:00 am'),我想估计完成开始的持续时间,不包括周六和周日

如果我没弄错的话,您希望计算两个日期之间的差值,但不包括结果范围内每个周末的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;