

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# addWorkDays
<a name="addWorkDays-function"></a>

`addWorkDays` 會在指定日期值上加上或減去指定的工作天數。此函數傳回工作日的日期，該日期位於指定輸入日期值之後或之前的指定工作日天數。

## 語法
<a name="addWorkDays-function-syntax"></a>

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

## 引數
<a name="addWorkDays-function-arguments"></a>

*initDate*  
充當計算開始日期的有效非 NULL 日期。  
+ **資料集欄位**：您要在其中新增此函數的資料集中的任何 `date` 欄位。
+ **日期函數**：從另一個 `date` 函數輸出的任何日期，例如 `parseDate`、`epochDate`、`addDateTime` 等。  
**Example**  

  ```
  addWorkDays(epochDate(1659484800), numWorkDays)
  ```
+ **計算欄位** – 傳回`date`值的任何快速計算欄位。  
**Example**  

  ```
  calcFieldStartDate = addDateTime(10, “DD”, startDate)
  addWorkDays(calcFieldStartDate, numWorkDays)
  ```
+ **參數** – 任何快速`datetime`參數。  
**Example**  

  ```
  addWorkDays($paramStartDate, numWorkDays)
  ```
+ 上述引數值的任意組合。

 *numWorkDays*   
充當計算結束日期的非 NULL 整數。  
+ **常值**：直接在表達式編輯器中鍵入的整數常值。  
**Example**  

  ```
  ```
+ **資料集欄位**：資料集中的任何日期欄位   
**Example**  

  ```
  ```
+ **純量函數或計算** – 從另一個函數傳回整數輸出的任何純量快速函數，例如 `decimalToInt`、 `abs`等。  
**Example**  

  ```
  addWorkDays(initDate, decimalToInt(sqrt (abs(numWorkDays)) ) )
  ```
+ **計算欄位** – 傳回`date`值的任何快速計算欄位。  
**Example**  

  ```
  someOtherIntegerCalcField = (num_days * 2) + 12
  addWorkDays(initDate, someOtherIntegerCalcField)
  ```
+ **參數** – 任何快速`datetime`參數。  
**Example**  

  ```
  addWorkDays(initDate, $param_numWorkDays)
  ```
+ 上述引數值的任意組合。

## 傳回類型
<a name="addWorkDays-function-return-type"></a>

Integer 

## 輸出值
<a name="addWorkDays-function-output-type"></a>

預期輸出值包括：
+ 正整數 (當 start\$1date < end\$1date 時)
+ 負整數 (當 start\$1date > end\$1date 時)
+ 當一個或兩個引數從 `dataset field` 取得 null 值時為 NULL。

## 輸入錯誤
<a name="addWorkDays-function-errors"></a>

不允許的引數值會導致錯誤，如以下範例所示。
+ 不允許在表達式中使用常值 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.
  ```

## 範例
<a name="addWorkDays-function-example"></a>

將正整數作為 `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.aws.amazon.com/zh_tw/quick/latest/userguide/images/addWorkDays-function-example.png)
