# yearname - 脚本和图表函数

此函数用于返回一个四位数年份的显示值，带有与包含 date 的年份的第一天的第一毫秒时间戳对应的基本数值。

`yearname()` 函数的时间范围的图表。

`yearname()` 函数的时间范围的图表。

`yearname()`yearname() 函数的时间范围的图表。 ![显示 yearname 函数将返回结果的时间范围的图表。](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearname-diagram1.png)

`yearname()` 函数与 `year()` 函数不同，因为它允许您偏移要评估的日期，并允许您设置一年中的第一个月。

如果一年的第一个月不是一月，则函数将返回包含日期的十二个月期间的两个四位数年份。例如，如果年初为 4 月，评估日期为 2020 年 6 月 30 日，则返回的结果为 `2020-2021`。

`yearname()` 函数的图表，4 月为一年中的第一个月。

`yearname()` 函数的图表，4 月为一年中的第一个月。

`yearname()`yearname() 函数的图表，4 月为一年中的第一个月。 ![该图表显示了 yearname 函数可以识别 12 个月内的日期，其返回取决于将哪个月设置为一年中的第一个月。](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearname-diagram2.png)

语法：

YearName(date[, period\_no[, first\_month\_of\_year]] )

返回数据类型： 双

| 参数 | 说明 |
| --- | --- |
| date | 要评估的日期或时间戳。 |
| period\_no | period\_no 为整数，其中值 0 表示该年份包含 date。period\_no 为负数表示前几年，为正数表示随后几年。 |
| first\_month\_of\_year | 如果您不想从一月开始处理（财政）年，可在 first\_month\_of\_year 中指定一个介于 2 和 12 之间的值。 该显示值将为一个字符串，表示两年。 |

可以使用以下值在 `first_month_of_year` 参数中设置一年中的第一个月：

first\_month\_of\_year 值

| 月 | 值 |
| --- | --- |
| 二月 | 2 |
| 三月 | 3 |
| 四月 | 4 |
| 五月 | 5 |
| 六月 | 6 |
| 七月 | 7 |
| 八月 | 8 |
| 九月 | 9 |
| 十月 | 10 |
| 十一月 | 11 |
| 十二月 | 12 |

适用场景

`yearname()` 函数用于按年份比较聚合。例如，如果您想查看每年产品的总销售额。

通过使用函数在主日历表中创建字段，可以在 Load 脚本中创建这些维度。它们也可以在图表中创建为计算尺寸

## 区域设置

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

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

函数示例

| 示例 | 结果 |
| --- | --- |
| `yearname('10/19/2001')` | 返回 '2001'。 |
| `yearname('10/19/2001',-1)` | 返回 '2000'。 |
| `yearname('10/19/2001',0,4)` | 返回 '2001-2002'。 |

相关主题

| 主题 | 说明 |
| --- | --- |
| [year - 脚本和图表函数](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/year.htm) | 此函数用于根据标准数字解释当表达式被解释为日期时返回一个表示年份的整数。 |

## 示例 1 – 没有其他参数

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

#### 加载脚本和结果

概览

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

加载脚本包含：

* 包含 2020 年和 2022 年之间的一组事务的数据集加载到名为 ‘`Transactions`’ 的表中。

* `DateFormat` 系统变量，设置为 ‘`MM/DD/YYYY`’。

* 使用 `yearname()` 并且其被设置为 `year_name` 字段的前置 Load。

加载脚本

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
      *, 
      yearname(date) as year_name 
      ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17 
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
]; 
```

结果

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

* `date`
* `year_name`

结果表

| date | year\_name |
| --- | --- |
| 01/13/2020 | 2020 |
| 02/26/2020 | 2020 |
| 03/27/2020 | 2020 |
| 04/16/2020 | 2020 |
| 05/21/2020 | 2020 |
| 08/14/2020 | 2020 |
| 10/07/2020 | 2020 |
| 12/05/2020 | 2020 |
| 01/22/2021 | 2021 |
| 02/03/2021 | 2021 |
| 03/17/2021 | 2021 |
| 04/23/2021 | 2021 |
| 05/04/2021 | 2021 |
| 06/30/2021 | 2021 |
| 07/26/2021 | 2021 |
| 12/27/2021 | 2021 |
| 06/06/2022 | 2022 |
| 07/18/2022 | 2022 |
| 11/14/2022 | 2022 |
| 12/12/2022 | 2022 |

通过使用 `yearname()` 函数并将日期字段作为函数的参数传递，在前置 Load 语句中创建了 ‘`year_name`’ 字段。

`yearname()` 函数确定日期值属于哪一年，并将其作为四位数的年值返回。

显示 2021 为年份值的 `yearname()` 函数的图表。

显示 2021 为年份值的 `yearname()` 函数的图表。

显示 2021 为年份值的 `yearname()`yearname() 函数的图表。![该图显示了 yearname() 函数返回 2021 的日期，即 2021 的 3 月 17 日。](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearname-example1-diagram.png)

## 示例 2 – period\_no

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

#### 加载脚本和结果

概览

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

加载脚本包含：

* 包含 2020 年和 2022 年之间的一组交易的数据集被加载到名为“交易”的表中。

* DateFormat 系统变量，设置为 ‘`MM/DD/YYYY`’。

* 使用 `yearname()` 并且其被设置为 `year_name` 字段的前置 Load。

加载脚本

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

Transactions: 
    Load 
      *, 
      yearname(date,-1) as prior_year_name 
      ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17 
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
];  
```

结果

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

* `date`
* `prior_year_name`

结果表

| date | prior\_year\_name |
| --- | --- |
| 01/13/2020 | 2019 |
| 02/26/2020 | 2019 |
| 03/27/2020 | 2019 |
| 04/16/2020 | 2019 |
| 05/21/2020 | 2019 |
| 08/14/2020 | 2019 |
| 10/07/2020 | 2019 |
| 12/05/2020 | 2019 |
| 01/22/2021 | 2020 |
| 02/03/2021 | 2020 |
| 03/17/2021 | 2020 |
| 04/23/2021 | 2020 |
| 05/04/2021 | 2020 |
| 06/30/2021 | 2020 |
| 07/26/2021 | 2020 |
| 12/27/2021 | 2020 |
| 06/06/2022 | 2021 |
| 07/18/2022 | 2021 |
| 11/14/2022 | 2021 |
| 12/12/2022 | 2021 |

由于 `yearname()` 函数中使用了 `-1` 的 `period_no` 作为偏移参数，因此函数首先标识交易发生的年。然后，函数移到前一年并返回结果年。

`yearname()` 函数的图表，其中 `period_no` 设置为 `-1`.

`yearname()` 函数的图表，其中 `period_no` 设置为 `-1`.

`yearname()`yearname() 函数的图表，其中 `period_no`period\_no 设置为 `-1`-1.![该图显示了为负一的 period_no 如何更改 yearname() 函数标识的时间范围。](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearname-example2-diagram.png)

## 示例 3 – first\_month\_of\_year

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

#### 加载脚本和结果

概览

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

加载脚本包含：

* 第一个 中的相同数据集。

* `DateFormat` 系统变量，设置为 ‘`MM/DD/YYYY`’。

* 使用 `yearname()` 并且其被设置为 `year_name` 字段的前置 Load。

加载脚本

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

Transactions: 
    Load 
      *, 
      yearname(date,0,4) as year_name 
      ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17 
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
];
```

结果

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

* `id`
* `date`
* `year_name`

结果表

| date | year\_name |
| --- | --- |
| 01/13/2020 | 2019-2020 |
| 02/26/2020 | 2019-2020 |
| 03/27/2020 | 2019-2020 |
| 04/16/2020 | 2020-2021 |
| 05/21/2020 | 2020-2021 |
| 08/14/2020 | 2020-2021 |
| 10/07/2020 | 2020-2021 |
| 12/05/2020 | 2020-2021 |
| 01/22/2021 | 2020-2021 |
| 02/03/2021 | 2020-2021 |
| 03/17/2021 | 2020-2021 |
| 04/23/2021 | 2021-2022 |
| 05/04/2021 | 2021-2022 |
| 06/30/2021 | 2021-2022 |
| 07/26/2021 | 2021-2022 |
| 12/27/2021 | 2021-2022 |
| 06/06/2022 | 2022-2023 |
| 07/18/2022 | 2022-2023 |
| 11/14/2022 | 2022-2023 |
| 12/12/2022 | 2022-2023 |

由于`yearname()` 函数中使用了 `4` 的 `first_month_of_year` 参数，因此年初从 1 月 1 日移动到 4 月 1 日。因此，每个 12 个月的周期跨越两个日历年，`yearname()` 函数返回两个四位数的年份作为评估日期。

交易 8198 发生在 2021 年 3 月 17 日。`yearname()` 函数将年初设置为 4 月 1 日，结束日期设置为 3 月 30 日。因此，交易 8198 发生在 2020 年 4 月 1 日至 2021 年 3 月 30 日这一年期间。因此，`yearname()` 函数返回 2020-2021 的值。

`yearname()` 函数的图表，3 月为一年中的第一个月。

`yearname()` 函数的图表，3 月为一年中的第一个月。

`yearname()`yearname() 函数的图表，3 月为一年中的第一个月。![图表显示了当一年的第一个月被设置为 3 月时， yearname() 函数确定的时间范围/](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearname-example3-diagram.png)

## 示例 4 – 图表对象

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

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

概览

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

加载脚本包含：

* 第一个 中的相同数据集。

* `DateFormat` 系统变量，设置为 ‘`MM/DD/YYYY`’。

但是，返回交易发生年份的字段是作为图表对象中的度量创建的。

加载脚本

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17 
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
];	
```

结果

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

`date`

要计算 `year_name` 字段，请创建此度量：

`=yearname(date)`

结果表

| date | =yearname(date) |
| --- | --- |
| 01/13/2020 | 2020 |
| 02/26/2020 | 2020 |
| 03/27/2020 | 2020 |
| 04/16/2020 | 2020 |
| 05/21/2020 | 2020 |
| 08/14/2020 | 2020 |
| 10/07/2020 | 2020 |
| 12/05/2020 | 2020 |
| 01/22/2021 | 2021 |
| 02/03/2021 | 2021 |
| 03/17/2021 | 2021 |
| 04/23/2021 | 2021 |
| 05/04/2021 | 2021 |
| 06/30/2021 | 2021 |
| 07/26/2021 | 2021 |
| 12/27/2021 | 2021 |
| 06/06/2022 | 2022 |
| 07/18/2022 | 2022 |
| 11/14/2022 | 2022 |
| 12/12/2022 | 2022 |

通过使用 `yearname()`函数并将日期字段作为函数的参数传递，在图表对象中创建了 ‘`year_name`’ 度量。

`yearname()` 函数确定日期值属于哪一年，并将其作为四位数的年值返回。

显示 2021 为年份值的 `yearname()` 函数的图表。

显示 2021 为年份值的 `yearname()` 函数的图表。

显示 2021 为年份值的 `yearname()`yearname() 函数的图表。![显示了 yearname() 函数将 2021 作为年份值返回的图表。](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearname-example4-diagram.png)

## 示例 5 – 场景

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

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

概览

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

加载脚本包含：

* 第一个 中的相同数据集。

* DateFormat 系统变量，设置为 ‘MM/DD/YYYY’。

最终用户希望得到一个图表，该图表按季度显示交易的总销售额。当 yearname() 维度在数据模型中不可用时，使用 yearname() 函数作为计算维度创建此图表。

加载脚本

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

Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'01/13/2020',37.23 
8189,'02/26/2020',17.17 
8190,'03/27/2020',88.27 
8191,'04/16/2020',57.42 
8192,'05/21/2020',53.80 
8193,'08/14/2020',82.06 
8194,'10/07/2020',40.39 
8195,'12/05/2020',87.21 
8196,'01/22/2021',95.93 
8197,'02/03/2021',45.89 
8198,'03/17/2021',36.23 
8199,'04/23/2021',25.66 
8200,'05/04/2021',82.77 
8201,'06/30/2021',69.98 
8202,'07/26/2021',76.11 
8203,'12/27/2021',25.12 
8204,'06/06/2022',46.23 
8205,'07/18/2022',84.21 
8206,'11/14/2022',96.24 
8207,'12/12/2022',67.67 
];
```

结果

加载数据并打开工作表。新建表格。

要按年份比较聚合，请创建以下计算维度：

=yearname(date)

创建该度量：

=sum(amount)

将度量的数字格式设置为金额。

结果表

| yearname(date) | =sum(amount) |
| --- | --- |
| 2020 | $463.55 |
| 2021 | $457.69 |
| 2022 | $294.35 |