# lastworkdate 脚本和图表功能

lastworkdate 函数用于返回最早的结束日以获得 no\_of\_workdays（周一至周五），如果在 start\_date 开始考虑任何列出的可选 holiday。start\_date 和 holiday 应是有效的日期或时间戳。

lastworkdate(start\_date, no\_of\_workdays {, holiday})

返回数据类型： 整数

显示如何使用 `lastworkdate()` 函数的日历

显示如何使用 `lastworkdate()` 函数的日历

显示如何使用 `lastworkdate()`lastworkdate() 函数的日历 ![Diagram that shows a calendar of a month. The start date of work is set on the 10th of the month and the end date of work is set on the 26th. The days inbetween the start and end date, excluding Saturdays and Sundays, are highlighted in green.](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-diagram1.png)

限制

除了周一开始到周五结束的工作周之外，没有任何方法可以修改区域或场景的 `lastworkdate()` 函数。

假日参数必须是字符串常数。它不接受表达式。

适合使用它的情况

`lastworkdate()` 函数通常用作表达式的一部分，当用户希望根据项目开始的时间和该期间将发生的假期计算项目或作业的建议结束日期时。

## 区域设置

除非另有规定，本主题中的示例使用以下日期格式：MM/DD/YYYY。日期格式已经在数据加载脚本中的 `SET DateFormat` 语句中指定。由于区域设置和其他因素，系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者，您可以更改加载脚本中的格式以匹配这些示例。

应用程序中的默认区域设置基于安装 Qlik Sense 的计算机或服务器的区域系统设置。如果您访问的 Qlik Sense 服务器设置为瑞典，则数据加载编辑器将使用瑞典地区设置的日期、时间、和货币。这些区域格式设置与 Qlik Sense 用户界面中显示的语言无关。Qlik Sense 将以您正在使用的浏览器所用的相同语言显示。

参数

| 参数 | 描述 |
| --- | --- |
| start\_date | 评估的开始日期。 |
| no\_of\_workdays | 要实现的工作日天数。 |
| holiday | 从工作日排除假期。假日表示为字符串常量日期。您可以指定多个假期日期，以逗号分隔。<br><br>示例： `  '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014' ` |

## 示例 1 – 基本示例

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lastworkdate.htm)

#### 加载脚本和结果

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 包含项目 ID、项目开始日期和项目所需的估计工作量（以天为单位）的数据集。数据集加载到名为 ‘`Projects`’ 的表中。

* 一个 前置加载，其中包含设置为 字段 ‘`end_date`’ 的 `lastworkdate()` 函数，并标识每个项目计划何时结束。

加载脚本

```
SET DateFormat='MM/DD/YYYY'; 

Projects: 
    Load 
       *, 
       LastWorkDate(start_date,effort) as end_date 
       ; 
Load 
id, 
start_date, 
effort 
Inline  
[	 
id,start_date,effort 
1,01/01/2022,14 
2,02/10/2022,17 
3,05/17/2022,5 
4,06/01/2022,12 
5,08/10/2022,26 
]; 
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `id`
* `start_date`
* `effort`
* `end_date`

结果表

| Id | start\_date | effort | end\_date |
| --- | --- | --- | --- |
| 1. | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 02/10/2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/23/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 08/10/2022 | 26 | 09/14/2022 |

由于没有计划的假日，该函数将定义的工作日数（星期一到星期五）添加到开始日期，以找到最早可能的结束日期。

以下日历显示项目 3 的开始和结束日期，工作日以绿色突出显示。

显示项目 3 开始和结束日期的日历

显示项目 3 开始和结束日期的日历

显示项目 3 开始和结束日期的日历 ![Diagram that shows the start date of project 3 as May 17 and the last work date as May 23, for a total of five working days.](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example1-diagram.png)

## 示例 2 - 单假期

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lastworkdate.htm)

#### 加载脚本和结果

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 包含项目 ID、项目开始日期和项目所需的估计工作量（以天为单位）的数据集。数据集加载到名为 ‘`Projects`’ 的表中。

* 包含 `lastworkdate()` 函数，该函数设置为字段 ‘`end_date`’ 并标识每个项目计划何时结束的 前置 Load。

然而，2022 年 5 月 18 日有一个假期。前置 Load 中的 `lastworkdate()` 函数在其第三个参数中包含假日，以标识每个项目计划何时结束。

加载脚本

```
SET DateFormat='MM/DD/YYYY'; 

Projects: 
    Load 
       *, 
       LastWorkDate(start_date,effort, '05/18/2022') as end_date 
       ; 
Load 
id, 
start_date, 
effort 
Inline  
[	 
id,start_date,effort 
1,01/01/2022,14 
2,02/10/2022,17 
3,05/17/2022,5 
4,06/01/2022,12 
5,08/10/2022,26 
]; 
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `id`
* `start_date`
* `effort`
* `end_date`

结果表

| Id | start\_date | effort | end\_date |
| --- | --- | --- | --- |
| 1. | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 02/10/2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/24/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 08/10/2022 | 26 | 09/14/2022 |

单个计划假日作为 `lastworkdate()` 函数中的第三个参数输入。因此，项目 3 的结束日期推迟了一天，因为假期发生在结束日期之前的一个工作日。

下面的日历显示项目 3 的开始和结束日期，并显示假日将项目的结束日期更改一天。

显示项目 3 开始和结束日期的日历，5 月 18 日为假日

显示项目 3 开始和结束日期的日历，5 月 18 日为假日

显示项目 3 开始和结束日期的日历，5 月 18 日为假日 ![Diagram that shows the start date of project 3 as May 17 with a holiday on May 18. The last work date of the project moves to May 24.](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example2-diagram.png)

## 示例 3 - 多个假期

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lastworkdate.htm)

#### 加载脚本和结果

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 包含项目 ID、项目开始日期和项目所需的估计工作量（以天为单位）的数据集。数据集加载到名为 ‘`Projects`’ 的表中。

* 包含 `lastworkdate()` 函数，该函数设置为字段 ‘`end_date`’ 并标识每个项目计划何时结束的 前置 Load。

然而，5 月 19 日、20 日、21 日和 22 日有三个假期。前置 Load 中的 `lastworkdate()` 函数在其第三个参数中包含每个假日，以确定每个项目计划何时结束。

加载脚本

```
SET DateFormat='MM/DD/YYYY'; 

Projects: 
    Load 
       *, 
       LastWorkDate(start_date,effort, '05/19/2022','05/20/2022','05/21/2022','05/22/2022') as end_date 
       ; 
Load 
id, 
start_date, 
effort 
Inline  
[	 
id,start_date,effort 
1,01/01/2022,14 
2,02/10/2022,17 
3,05/17/2022,5 
4,06/01/2022,12 
5,08/10/2022,26 
]; 
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `id`
* `start_date`
* `effort`
* `end_date`

结果表

| Id | start\_date | effort | end\_date |
| --- | --- | --- | --- |
| 1. | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 02/10/2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/25/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 08/10/2022 | 26 | 09/14/2022 |

这四个假期在开始日期和工作日数之后作为参数列表输入 `lastworkdate()` 函数中。

以下日历显示项目 3 的开始和结束日期，并显示节假日将项目的结束日期更改三天。

显示项目 3 的开始和结束日期的日历，假期为 5 月 19 日至 22 日

显示项目 3 的开始和结束日期的日历，假期为 5 月 19 日至 22 日

显示项目 3 的开始和结束日期的日历，假期为 5 月 19 日至 22 日 ![Diagram that shows the start date of project 3 as May 17 and the last work date as May 25, with four extra holidays moving the last work date back by three days - with two of the holidays falling on Saturday and Sunday.](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example3-diagram.png)

## 示例 4 - 单假期（图表）

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/lastworkdate.htm)

#### 加载脚本和图表表达式

概述

使用与第一个 相同的数据集和场景。

然而，在本例中，未更改的数据集被加载到应用程序。`end_date` 字段作为图表对象中的度量计算。

加载脚本

```
SET DateFormat='MM/DD/YYYY'; 

Projects: 
Load 
id, 
start_date, 
effort 
Inline  
[	 
id,start_date,effort 
1,01/01/2022,14 
2,02/10/2022,17 
3,05/17/2022,5 
4,06/01/2022,12 
5,08/10/2022,26 
]; 
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* `id`
* `start_date`
* `effort`

要计算 end\_date，创建以下度量：

* `=LastWorkDate(start_date,effort,'05/18/2022')`

结果表

| Id | start\_date | effort | =LastWorkDate(start\_date,effort,'05/18/2022') |
| --- | --- | --- | --- |
| 1. | 01/01/2022 | 14 | 01/20/2022 |
| 2 | 02/10/2022 | 17 | 03/04/2022 |
| 3 | 05/17/2022 | 5 | 05/23/2022 |
| 4 | 06/01/2022 | 12 | 06/16/2022 |
| 5 | 08/10/2022 | 26 | 09/14/2022 |

在图表中输入单个计划假日作为度量。因此，项目 3 的结束日期推迟了一天，因为假期发生在结束日期之前的一个工作日。

下面的日历显示项目 3 的开始和结束日期，并显示假日将项目的结束日期更改一天。

显示项目 3 开始和结束日期的日历，5 月 18 日为假日

显示项目 3 开始和结束日期的日历，5 月 18 日为假日

显示项目 3 开始和结束日期的日历，5 月 18 日为假日 ![Diagram that shows the start date of project 3 as May 17 with a holiday on May 18. The last work date of the project moves to May 24.](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-lastworkdate-example2-diagram.png)