本文介绍了如何在没有周六和周日的情况下使DB2中的工作日不同呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表,其中包含一些日期间隔,如下所示:

|id|group|date_start|date_end|

我想创建一个如下所示的视图:

|id|working_days_diff|

|id|group|working_days_diff|

我怎么才能做这样的事呢?谢谢

我在考虑一个自定义函数,如果DAYOFWEEK不是星期六和星期日,它将循环差值和总和中的每一天。但是我不知道怎么做.

推荐答案

CREATE FUNCTION stkqry.WORKING_DAY_DIFF(DATE_START date, DATE_END date)
RETURNS INTEGER
LANGUAGE SQL
BEGIN
    DECLARE WORKING_DAYS INTEGER DEFAULT 0;
    DECLARE DATE_COUNTER DATE;
    SET DATE_COUNTER = DATE_START;
    WHILE DAYS(DATE_COUNTER) < DAYS(DATE_END) DO
        SET DATE_COUNTER = DATE(days(DATE_COUNTER)+1);

        CASE WHEN DAYOFWEEK_ISO(DATE_COUNTER) = 6 THEN
            SET WORKING_DAYS = WORKING_DAYS;
        WHEN DAYOFWEEK_ISO(DATE_COUNTER) = 7 THEN
            SET WORKING_DAYS = WORKING_DAYS;
        ELSE
            SET WORKING_DAYS = WORKING_DAYS + 1;
        END CASE;
    END WHILE;
    RETURN WORKING_DAYS;
END

这篇关于如何在没有周六和周日的情况下使DB2中的工作日不同呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-20 11:22