计算SQL中2个日期之间的差异,不包括周末天数

lig*_*nia 10 sql date

我想构建一个SQL查询来计算2个日期之间的差异,而不计算结果中的周末日期.

有没有办法格式化日期以获得此结果?例如,对于Oracle数据库:

select sysdate - creation_dttm from the_table
Run Code Online (Sandbox Code Playgroud)

pol*_*1er 7

你应该试试一个功能:

CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
RETURNS INT
RETURN ABS(DATEDIFF(date2, date1)) + 1
     - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
                    ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
     - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)
     - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);
Run Code Online (Sandbox Code Playgroud)

测试:

SELECT TOTAL_WEEKDAYS('2013-08-03', '2013-08-21') weekdays1,
       TOTAL_WEEKDAYS('2013-08-21', '2013-08-03') weekdays2;
Run Code Online (Sandbox Code Playgroud)

结果:

| WEEKDAYS1 | WEEKDAYS2 |
-------------------------
|        13 |        13 |
Run Code Online (Sandbox Code Playgroud)