

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# addWorkDays


`addWorkDays` 将指定的工作日数与给定的日期值相加或相减。该函数返回工作日的日期，该日期落在给定输入日期值之后或之前的指定工作日。

## 语法


```
addWorkDays(initDate, numWorkDays)
```

## Arguments


*initDate*  
用作计算开始日期的有效非 NULL 日期。  
+ **数据集字段** – 要向其添加此函数的数据集中的任何 `date` 字段。
+ **日期函数** – 从其他 `date` 函数输出的任何日期，例如 `parseDate`、`epochDate`、`addDateTime` 等。  
**Example**  

  ```
  addWorkDays(epochDate(1659484800), numWorkDays)
  ```
+ **计算字段**-任何返回`date`值的快速计算字段。  
**Example**  

  ```
  calcFieldStartDate = addDateTime(10, “DD”, startDate)
  addWorkDays(calcFieldStartDate, numWorkDays)
  ```
+ **参数**-任何 Quick `datetime` 参数。  
**Example**  

  ```
  addWorkDays($paramStartDate, numWorkDays)
  ```
+ 上述参数值的任意组合。

 *numWorkDays*   
用作计算结束日期的非 NULL 整数。  
+ **文本** – 直接在表达式编辑器中键入的整数文本。  
**Example**  

  ```
  ```
+ **数据集字段** – 数据集中的任何日期字段   
**Example**  

  ```
  ```
+ **标量函数或计算**-任何从另一个函数返回整数输出的标量 Quick 函数`decimalToInt`，例如`abs`，等等。  
**Example**  

  ```
  addWorkDays(initDate, decimalToInt(sqrt (abs(numWorkDays)) ) )
  ```
+ **计算字段**-任何返回`date`值的快速计算字段。  
**Example**  

  ```
  someOtherIntegerCalcField = (num_days * 2) + 12
  addWorkDays(initDate, someOtherIntegerCalcField)
  ```
+ **参数**-任何 Quick `datetime` 参数。  
**Example**  

  ```
  addWorkDays(initDate, $param_numWorkDays)
  ```
+ 上述参数值的任意组合。

## 返回类型


整数 

## 输出值


预期的输出值包括：
+ 正整数（当 start\$1date < end\$1date 时）
+ 负整数（当 start\$1date > end\$1date 时）
+ 当其中一个或两个参数从 `dataset field` 中获得空值时，则为 NULL。

## 输入错误


不允许使用的参数值会导致错误，如以下示例所示。
+ 不允许在表达式中使用文本 NULL 作为参数。  
**Example**  

  ```
  addWorkDays(NULL, numWorkDays) 
  ```  
**Example**  

  ```
  Error
  At least one of the arguments in this function does not have correct type. 
  Correct the expression and choose Create again.
  ```
+ 不允许在表达式中使用字符串文本作为参数，或者使用除日期之外的任何其他数据类型。在以下示例中，字符串 **"2022-08-10"** 看起来像日期，但实际上是一个字符串。要使用该字符串，您必须使用可转换为日期数据类型的函数。  
**Example**  

  ```
  addWorkDays("2022-08-10", 10)
  ```  
**Example**  

  ```
  Error
  Expression addWorkDays("2022-08-10", numWorkDays) for function addWorkDays has 
  incorrect argument type addWorkDays(String, Number). 
  Function syntax expects Date, Integer.
  ```

## 示例


正整数作为 `numWorkDays` 参数将生成输入日期将来的日期。负整数作为 `numWorkDays` 参数将生成输入日期过去的结果日期。无论输入日期是工作日还是周末，`numWorkDays` 参数的零值都生成与输入日期相同的值。

`addWorkDays` 函数的运算粒度为：`DAY`。在任何低于或高于 `DAY` 等级的粒度下都无法保持准确度。

```
addWorkDays(startDate, endDate)
```

假设有一个名为 `employmentStartDate` 的字段，其值如下：

```
2022-08-10 2022-08-06 2022-08-07 
```

使用上面的字段并进行以下计算，`addWorkDays` 返回修改后的值，如下所示：

```
addWorkDays(employmentStartDate, 7)

2022-08-19 
2022-08-16 
2022-08-16 

addWorkDays(employmentStartDate, -5)

2022-08-02 
2022-08-01 
2022-08-03 

addWorkDays(employmentStartDate, 0)

2022-08-10 
2022-08-06 
2022-08-07
```

以下示例根据每位员工的实际工作天数计算 2 年内支付给每位员工的按比例奖金总额。

```
last_day_of_work = addWorkDays(employment_start_date, 730)
total_days_worked = netWorkDays(employment_start_date, last_day_of_work)
total_bonus = total_days_worked * bonus_per_day
```

![\[alt text not found\]](http://docs.amazonaws.cn/quick/latest/userguide/images/addWorkDays-function-example.png)
