Teradata SQL如何实现Excel WORKDAY函数的工作日计算功能?
在Teradata SQL中实现排除周末的工作日计算
对应Excel中WORKDAY函数的功能,Teradata有两种可行解决方案:
方案一:使用内置ADD_WORKDAYS函数(推荐)
Teradata 14.10及以上版本提供了ADD_WORKDAYS函数,直接支持排除周末的工作日计算,语法简洁:
SELECT ADD_WORKDAYS(CURRENT_DATE, 15) AS target_workday;
- 参数1:起始日期(这里用
CURRENT_DATE表示当前日期) - 参数2:需要添加的工作日数量
- 默认自动排除周六、周日,无需额外配置
方案二:手动逻辑计算(兼容低版本)
如果你的Teradata版本不支持ADD_WORKDAYS,可以通过日期运算手动实现:
核心逻辑是计算N个工作日需要跨越的周末天数,再叠加到基础天数上。
通用SQL示例(计算当前日期后15个工作日):
SELECT CURRENT_DATE + 15 + -- 计算需要额外补充的周末天数 ((15 + EXTRACT(WEEKDAY FROM CURRENT_DATE) - 1) / 5) * 2 - CASE WHEN EXTRACT(WEEKDAY FROM CURRENT_DATE) + 15 > 5 THEN 2 ELSE 0 END AS target_workday;
逻辑说明:
EXTRACT(WEEKDAY FROM date)返回值:1=周一,2=周二,…,5=周五,6=周六,7=周日((n + weekday -1)/5)*2计算N个工作日跨越的完整周末数量(每5个工作日对应2天周末)CASE语句处理起始日期靠近周末的特殊情况,避免多算周末天数
内容的提问来源于stack exchange,提问作者SETIAONE
相关产品推荐
相关产品推荐

