# year 脚本和图表功能

此函数用于根据标准数字解释当 expression 被解释为日期时返回一个表示年份的整数。

语法：

year(expression)

返回数据类型： 整数

`year()` 函数可作为脚本和图表函数使用。该函数返回特定日期的年份。它通常用于在主日历中创建年份字段作为维度。

## 适合使用它的情况

当您希望按年份比较聚合时，`year()` 函数非常有用。例如，如果您想查看每年产品的总销售额，则函数可以使用它。

通过使用函数在主日历表中创建字段，可以在 Load 脚本中创建这些维度。或者，它可以直接在图表中用作计算维度。

函数示例

| 示例 | 结果 |
| --- | --- |
| `year(<br>'2012-10-12' )` | 返回 2012 |
| `year(<br>'35648' )` | 返回 1997，因为 35648 = 1997-08-06 |

## 区域设置

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

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

## 示例 1 – DateFormat 数据集（脚本）

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

#### 加载脚本和结果

概述

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

加载脚本包含：

* 加载到名为 `Master Calendar` 的表中的日期数据集。

* 使用默认 `DateFormat` 系统变量 MM/DD/YYYY。

* 使用 `year()` 函数创建另一个名为 `year` 的字段的前置 Load。

加载脚本

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

Master_Calendar:

    Load
        date,
        year(date) as year
        ;
Load
date
Inline 
[
date
12/28/2020
12/29/2020
12/30/2020
12/31/2020
01/01/2021
01/02/2021
01/03/2021
01/04/2021
01/05/2021
01/06/2021
01/07/2021
];
```

结果

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

* `date`

* `year`

结果表

| 日期 | 年 |
| --- | --- |
| 12/28/2020 | 2020 |
| 12/29/2020 | 2020 |
| 12/30/2020 | 2020 |
| 12/31/2020 | 2020 |
| 01/01/2021 | 2021 |
| 01/02/2021 | 2021 |
| 01/03/2021 | 2021 |
| 01/04/2021 | 2021 |
| 01/05/2021 | 2021 |
| 01/06/2021 | 2021 |
| 01/07/2021 | 2021 |

## 示例 2–ANSI 日期

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

#### 加载脚本和结果

概述

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

加载脚本包含：

* 加载到名为 `Master Calendar` 的表中的日期数据集。

* 使用默认 `DateFormat` 系统变量 (MM/DD/YYYY)。但是，数据集中包含的日期采用 ANSI 标准日期格式。

* 使用 `year()` 函数创建另一个名为 `year` 的字段的前置 Load。

加载脚本

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

Master_Calendar:
    Load
        date,
        year(date) as year
        ;
Load
date
Inline 
[
date
2020-12-28
2020-12-29
2020-12-30
2020-12-31
2021-01-01
2021-01-02
2021-01-03
2021-01-04
2021-01-05
2021-01-06
2021-01-07
];
```

结果

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

* `date`

* `year`

结果表

| 日期 | 年 |
| --- | --- |
| 2020-12-28 | 2020 |
| 2020-12-29 | 2020 |
| 2020-12-30 | 2020 |
| 2020-12-31 | 2020 |
| 2021-01-01 | 2021 |
| 2021-01-02 | 2021 |
| 2021-01-03 | 2021 |
| 2021-01-04 | 2021 |
| 2021-01-05 | 2021 |
| 2021-01-06 | 2021 |
| 2021-01-07 | 2021 |

## 示例 3 – 未格式化日期

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

#### 加载脚本和结果

概述

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

加载脚本包含：

* 加载到名为 `Master Calendar` 的表中的数字格式日期数据集。

* 使用默认 `DateFormat` 系统变量 (MM/DD/YYYY)。

* 使用 `year()` 函数创建另一个名为 `year` 的字段的在前加载。

原始的未格式化日期被加载并命名为 `unformatted_date`，为了清晰起见，使用另一个名为 `long_date` 的字段，使用 `date()` 函数将数字日期转换为格式化日期字段。

加载脚本

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

Master_Calendar:
    Load
        unformatted_date,
        date(unformatted_date) as long_date,
        year(unformatted_date) as year
        ;
Load
unformatted_date
Inline 
[
unformatted_date
44868
44898
44928
44958
44988
45018
45048
45078
45008
45038
45068
];
```

结果

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

* `unformatted_date`

* `long_date`

* `year`

结果表

| unformatted\_date | long\_date | 年 |
| --- | --- | --- |
| 44868 | 11/03/2022 | 2022 |
| 44898 | 12/03/2022 | 2022 |
| 44928 | 01/02/2023 | 2023 |
| 44958 | 02/01/2023 | 2023 |
| 44988 | 03/03/2023 | 2023 |
| 45008 | 03/23/2023 | 2023 |
| 45018 | 04/02/2023 | 2023 |
| 45038 | 04/22/2023 | 2023 |
| 45048 | 05/02/2023 | 2023 |
| 45068 | 05/22/2023 | 2023 |
| 45078 | 06/01/2023 | 2023 |

## 示例 4 – 图表对象

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

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

概述

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

在本例中，所下订单的数据集被加载到名为 Sales 的表中。表格包含三个字段：

* id

* sales\_date

* amount

产品销售保修期为自销售之日起两年。任务是在图表中创建一个度量，以确定每个保修的到期年份。

加载脚本

```
Sales:
Load
id,
sales_date,
amount
Inline 
[
id,sales_date,amount
1,12/28/2020,231.24,
2,12/29/2020,567.28,
3,12/30/2020,364.28,
4,12/31/2020,575.76,
5,01/01/2021,638.68,
6,01/02/2021,785.38,
7,01/03/2021,967.46,
8,01/04/2021,287.67
9,01/05/2021,764.45,
10,01/06/2021,875.43,
11,01/07/2021,957.35
];
```

结果

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

创建以下度量：

=year(sales\_date+365\*2)

结果表

| sales\_date | =year(sales\_date+365\*2) |
| --- | --- |
| 12/28/2020 | 2022 |
| 12/29/2020 | 2022 |
| 12/30/2020 | 2022 |
| 12/31/2020 | 2022 |
| 01/01/2021 | 2023 |
| 01/02/2021 | 2023 |
| 01/03/2021 | 2023 |
| 01/04/2021 | 2023 |
| 01/05/2021 | 2023 |
| 01/06/2021 | 2023 |
| 01/07/2021 | 2023 |

该度量的结果见上表。要将一个日期加上两年，请将 365 乘以 2，并将结果加到销售日期。因此，2020 年销售额的到期年份为 2022 年。