我想构建一个SQL查询来计算2个日期之间的差异,而不计算结果中的周末日期.
有没有办法格式化日期以获得此结果?例如,对于Oracle数据库:
select sysdate - creation_dttm from the_table
Run Code Online (Sandbox Code Playgroud)
你应该试试一个功能:
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)
| 归档时间: |
|
| 查看次数: |
47451 次 |
| 最近记录: |