PLVDATE包函数

  • plvdate.add_bizdays(date_value date, days int)

    描述:将给定日期加上指定数量的工作日,并返回经过这些工作日之后的结果日期。

    参数说明:

    • date_value:要添加的日期。

    • days:工作日天数。

    返回值类型:date

    示例:

    openGauss=# -- 2022-01-07是周五,三个工作日之后就是下周三,即2022-01-12
    openGauss=# select plvdate.add_bizdays('2022-01-07', 3);
    add_bizdays
    -------------
    2022-01-12
    (1 row)
    
    openGauss=# -- 2022-01-03是周一,三个工作日之后就是周四,即2022-01-06
    openGauss=# select plvdate.add_bizdays('2022-01-03', 3);
    add_bizdays
    -------------
    2022-01-06
    (1 row)
    
  • plvdate.nearest_bizday(d date)

    描述:返回一个离指定日期最近的工作日的日期(两个工作日之间向下取)。

    参数说明:

    • d:作为起点的日期。

    返回值类型:date

    示例:

    openGauss=# -- 2022-01-13是周四,夹在两个工作日之间,向下取取2022-01-12
    openGauss=# select plvdate.nearest_bizday('2022-01-13');
    nearest_bizday
    ----------------
    2022-01-12
    (1 row)
    
    openGauss=# -- 2022-01-16是周日,最近的工作日是下周一,即2022-01-17
    openGauss=# select plvdate.nearest_bizday('2022-01-16');
    nearest_bizday
    ----------------
    2022-01-17
    (1 row)
    
  • plvdate.next_bizday(d date)

    描述:返回当前日期的下一个工作日。

    参数说明:

    • d:作为起点的日期。

    返回值类型:date

    示例:

    openGauss=# -- 2022-01-13是周四,下一个工作日是周五
    openGauss=# select plvdate.next_bizday('2022-01-13');
    next_bizday
    -------------
    2022-01-14
    (1 row)
    
    openGauss=# -- 2022-01-15是周六,下一个工作日是下周一
    openGauss=# select plvdate.next_bizday('2022-01-15');
    next_bizday
    -------------
    2022-01-17
    (1 row)
    
  • plvdate.include_start([is_include_start bool])

    描述:当查询两个日期的工作日时,是否包含起始的日期。

    参数描述:

    • is_include_start:可选参数,表示当查询两个日期的工作日时是否包含起始的日期,true表示是,false表示不是,缺省时为true。

    返回值类型:void

    示例:

    openGauss=# select plvdate.include_start();
    include_start
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.include_start(true);
    include_start
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.include_start(false);
    include_start
    ---------------
    
    (1 row)
    
  • plvdate.bizdays_between(d1 date, d2 date)

    描述:返回两个日期之间的工作日天数。右边界是闭区间,左边界是否为闭区间由include_start决定。

    参数说明:

    • d1:日期边界。

    • d2:日期边界。

    返回值类型:int

    示例:

    openGauss=# select plvdate.include_start(true);
    include_start
    ---------------
    
    (1 row)
    
    openGauss=# -- 周一到周五有5个工作日
    openGauss=# select plvdate.bizdays_between('2022-01-03', '2022-01-07');
    bizdays_between
    -----------------
                5
    (1 row)
    
    openGauss=# -- 周六到周日有0个工作日
    openGauss=# select plvdate.bizdays_between('2022-01-08', '2022-01-09');
    bizdays_between
    -----------------
                0
    (1 row)
    
    openGauss=# -- 周一到下下周一有11个工作日
    openGauss=# select plvdate.bizdays_between('2022-01-03', '2022-01-17');
    bizdays_between
    -----------------
                11
    (1 row)
    
    openGauss=# select plvdate.include_start(false);
    include_start
    ---------------
    
    (1 row)
    
    openGauss=# -- 周一到周五有5个工作日,但现在不包含起始日期,所以为4
    openGauss=# select plvdate.bizdays_between('2022-01-03', '2022-01-07');
    bizdays_between
    -----------------
                4
    (1 row)
    
    openGauss=# select plvdate.bizdays_between('2022-01-08', '2022-01-09');
    bizdays_between
    -----------------
                0
    (1 row)
    
    openGauss=# -- 周一到下下周一有11个工作日,但现在不包含起始日期,所以为10
    openGauss=# select plvdate.bizdays_between('2022-01-03', '2022-01-17');
    bizdays_between
    -----------------
                10
    (1 row)
    
  • plvdate.including_start()

    描述:查询include_start的状态。

    返回值类型:bool

    示例:

    openGauss=# select plvdate.include_start(true);
    include_start
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.including_start();
    including_start
    -----------------
    t
    (1 row)
    
    openGauss=# select plvdate.include_start(false);
    include_start
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.including_start();
    including_start
    -----------------
    f
    (1 row)
    
  • plvdate.noinclude_start()

    描述:相当于plvdate.include_start(false)的效果,表示取消include_start。

    返回值类型:void

    示例:

    openGauss=# select plvdate.include_start(true);
    include_start
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.including_start();
    including_start
    -----------------
    t
    (1 row)
    
    openGauss=# select plvdate.noinclude_start();
    noinclude_start
    -----------------
    
    (1 row)
    
    openGauss=# select plvdate.including_start();
    including_start
    -----------------
    f
    (1 row)
    
  • plvdate.prev_bizday(d date)

    描述:返回当前日期的上一个工作日。

    参数说明:

    • d:作为起点的日期。

    返回值类型:date

    示例:

    openGauss=# select plvdate.prev_bizday('2022-01-08');
    prev_bizday
    -------------
    2022-01-07
    (1 row)
    
    openGauss=# select plvdate.prev_bizday('2022-01-09');
    prev_bizday
    -------------
    2022-01-07
    (1 row)
    
    openGauss=# select plvdate.prev_bizday('2022-01-07');
    prev_bizday
    -------------
    2022-01-06
    (1 row)
    
  • plvdate.isbizday(d date)

    描述:判断指定日期是否为工作日。

    参数说明:

    • d:指定的日期。

    返回值类型:bool

    示例:

    openGauss=# select plvdate.isbizday('2022-01-07');
    isbizday
    ----------
    t
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-01-08');
    isbizday
    ----------
    f
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-01-09');
    isbizday
    ----------
    f
    (1 row)
    
  • plvdate.set_nonbizday(day text)

    描述:将指定的星期设置为非工作日。

    参数说明:

    day:指定星期几。取值范围为[“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, NULL]。

    返回值类型:void

    示例:

    openGauss=# select plvdate.isbizday('2023-10-02');
    isbizday
    ----------
    t
    (1 row)
    
    openGauss=# select plvdate.set_nonbizday('Monday');
    set_nonbizday
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2023-10-02');
    isbizday
    ----------
    f
    (1 row)
    
  • plvdate.unset_nonbizday(day text)

    描述:将指定的星期从非工作日中剔除。

    参数说明:

    • day:指定星期几。取值范围为[“Sunday”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, NULL]。

    返回值类型:void

    示例:

    openGauss=# -- 上一个用例已经将Monday设置为非工作日了
    openGauss=# select plvdate.unset_nonbizday('Monday');
    unset_nonbizday
    -----------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2023-10-02');
    isbizday
    ----------
    t
    (1 row)
    
  • plvdate.set_nonbizday(date_value date [, is_repeat bool])

    描述:将指定的日期设置为非工作日。

    参数说明:

    • date_value:要设置为非工作日的日期。

    • is_repeat:可选参数,如果为true,则每年的同一个日期都会被设置为非工作日,缺省时为false。

    返回值类型:void

    示例:

    openGauss=# select plvdate.set_nonbizday("date" '2020-05-05', false);
    set_nonbizday
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2020-05-05');
    isbizday
    ----------
    f
    (1 row)
    
    openGauss=# select plvdate.isbizday('2021-05-05');
    isbizday
    ----------
    t
    (1 row)
    
    openGauss=# select plvdate.set_nonbizday("date" '2020-05-05', true);
    set_nonbizday
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2021-05-05');
    isbizday
    ----------
    f
    (1 row)
    
  • plvdate.unset_nonbizday(date_value text, [, is_repeat bool])

    描述:将指定的日期从非工作日中剔除。

    参数说明:

    • date_value:指定日期。

    • is_repeat:可选参数,为true则取消往后每年同日期的非工作日。缺省值为false。

    返回值类型:void

    示例:

    openGauss=# select plvdate.set_nonbizday("date" '2020-05-05', true);
    set_nonbizday
    ---------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2020-05-05');
    isbizday
    ----------
    f
    (1 row)
    
    openGauss=# select plvdate.unset_nonbizday("date" '2020-05-05', true);
    unset_nonbizday
    -----------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2020-05-05');
    isbizday
    ----------
    t
    (1 row)
    
    openGauss=# select plvdate.isbizday('2021-05-05');
    isbizday
    ----------
    t
    (1 row)
    
  • plvdate.use_easter([used_easter bool])

    描述:表示是否将复活节周日和复活节周一视为非工作日。

    参数说明:

    • used_easter:可选参数,为true表示复活节周日和复活节周一视为非工作日,为false表示为工作日,缺省时为true。

    返回值类型:void

    示例:

    openGauss=# -- 2022-04-18是一个复活节星期一,所以为非工作日
    openGauss=# select plvdate.isbizday('2022-04-18');
    isbizday
    ----------
    f
    (1 row)
    
    openGauss=# select plvdate.use_easter(false);
    use_easter
    ------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-04-18');
    isbizday
    ----------
    t
    (1 row)
    
    openGauss=# select plvdate.use_easter(true);
    use_easter
    ------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-04-18');
    isbizday
    ----------
    f
    (1 row)
    
  • plvdate.unuse_easter()

    描述:表示取消复活节周日和复活节周一为非工作日。

    返回值类型:void

    示例:

    openGauss=# -- 2022-04-18是一个复活节星期一,所以为非工作日
    openGauss=# select plvdate.isbizday('2022-04-18');
    isbizday
    ----------
    f
    (1 row)
    
    openGauss=# select plvdate.unuse_easter();
    unuse_easter
    --------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-04-18');
    isbizday
    ----------
    t
    (1 row)
    
  • plvdate.using_easter()

    描述:返回是否正在使用复活节周日和复活节周一为非工作日。

    返回值类型:bool

    示例:

    openGauss=# select plvdate.using_easter();
    using_easter
    --------------
    f
    (1 row)
    
    openGauss=# select plvdate.use_easter();
    use_easter
    ------------
    
    (1 row)
    
    openGauss=# select plvdate.using_easter();
    using_easter
    --------------
    t
    (1 row)
    
  • plvdate.use_great_friday([used_great_friday bool])

    描述:表示是否把受难日作为非工作日.

    参数说明:

    • used_great_friday:可选参数,为true表示受难日作为非工作日,为false表示受难日作为工作日,缺省时为true。

    返回值类型:void

    示例:

    openGauss=# -- 2022-04-15是一个受难日,所以为非工作日
    openGauss=# select plvdate.isbizday('2022-04-15');
    isbizday
    ----------
    f
    (1 row)
    
    openGauss=# select plvdate.use_great_friday(false);
    use_great_friday
    ------------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-04-15');
    isbizday
    ----------
    t
    (1 row)
    
    openGauss=# select plvdate.use_great_friday(true);
    use_great_friday
    ------------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-04-15');
    isbizday
    ----------
    f
    (1 row)
    
  • plvdate.unuse_great_friday()

    描述:表示是否使用复活节周日和复活节周一,如果使用则复活节周日和复活节周一为非工作日.

    返回值类型:void

    示例:

    openGauss=# -- 2022-04-15是一个受难日,所以为非工作日
    openGauss=# select plvdate.isbizday('2022-04-15');
    isbizday
    ----------
    f
    (1 row)
    
    openGauss=# select plvdate.unuse_great_friday();
    unuse_great_friday
    --------------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-04-15');
    isbizday
    ----------
    t
    (1 row)
    
    openGauss=# select plvdate.use_great_friday(true);
    use_great_friday
    ------------------
    
    (1 row)
    
    openGauss=# select plvdate.isbizday('2022-04-15');
    isbizday
    ----------
    f
    (1 row)
    
  • plvdate.using_great_friday()

    描述:返回是否正在使用受难日为非工作日。

    返回值类型:bool

    示例:

    openGauss=# select plvdate.using_great_friday();
    using_great_friday
    --------------------
    t
    (1 row)
    
    openGauss=# select plvdate.unuse_great_friday();
    unuse_great_friday
    --------------------
    
    (1 row)
    
    openGauss=# select plvdate.using_great_friday();
    using_great_friday
    --------------------
    f
    (1 row)
    
  • plvdate.version()

    描述:返回plvdate包的版本。

    返回值类型:cstring

    示例:

    openGauss=# select plvdate.version();
                        version
    -----------------------------------------------
    PostgreSQL PLVdate, version 3.7, October 2018
    (1 row)
    
  • plvdate.default_holidays(contry text)

    描述:设置默认法定假日为指定国家的法定假日。

    参数说明:

    contry:指定的国家,取值范围为[“Czech”, “Germany”, “Poland”, “Austria”, “Slovakia”, “Russia”, “Gb”, “Usa”]。

    返回值类型:void

    示例:

    openGauss=# select plvdate.isbizday('2023-05-09');
    isbizday
    ----------
    t
    (1 row)
    
    openGauss=# select plvdate.default_holidays('Russia');
    default_holidays
    ------------------
    
    (1 row)
    
    openGauss=# -- 俄罗斯每年的5月9日为胜利日,是俄罗斯的法定假日
    openGauss=# select plvdate.isbizday('2023-05-09');
    isbizday
    ----------
    f
    (1 row)
    
  • plvdate.days_inmonth(d date)

    描述:返回指定日期所在月有多少天。

    参数描述

    • d:指定日期。

    返回值类型:integer

    示例:

    openGauss=# select plvdate.days_inmonth('2023-02-01');
    days_inmonth
    --------------
            28
    (1 row)
    
    openGauss=# select plvdate.days_inmonth('2020-02-01');
    days_inmonth
    --------------
            29
    (1 row)
    
    openGauss=# select plvdate.days_inmonth('2020-08-01');
    days_inmonth
    --------------
            31
    (1 row)
    
    openGauss=# select plvdate.days_inmonth('2020-09-01');
    days_inmonth
    --------------
            30
    (1 row)
    
    openGauss=# select plvdate.days_inmonth('2020-07-01');
    days_inmonth
    --------------
            31
    (1 row)
    
  • plvdate.isleapyear(d date)

    描述:返回指定日期所在的年是否为闰年。

    参数描述

    • d:指定日期。

    返回值类型:bool

    示例:

    openGauss=# select plvdate.isleapyear('2023-02-01');
    isleapyear
    ------------
    f
    (1 row)
    
    openGauss=# select plvdate.isleapyear('2020-02-01');
    isleapyear
    ------------
    t
    (1 row)
    
意见反馈
编组 3备份
    openGauss 2024-04-27 00:42:13
    取消