# year 指令碼與圖表函數

當 expression 根據標準數字解譯的方式可解譯為日期時，此函數會傳回代表年份的整數。

語法：

year(expression)

傳回的資料類型： 整數

`year()` 函數可作為指令碼和圖表函數。該函數傳回特定日期的年份。這通常用來建立年份欄位，作為主要行事曆中的維度。

## 何時使用 year

若您想要按年份比較彙總，則 `year()` 函數很實用。例如，若您想要按年份查看產品的總銷售額，可使用此函數。

可以使用該函數建立主要行事曆表格中的欄位，以在載入指令碼中建立這些維度。相反地，這可直接在圖表中作為計算維度使用。

函數範例

| 範例 | 結果 |
| --- | --- |
| `year(<br>'2012-10-12' )` | 傳回 2012 |
| `year(<br>'35648' )` | 傳回 1997，因為 35648 = 1997-08-06 |

## 區域設定

除非另有說明，否則此主題中的範例皆使用下列日期格式：MM/DD/YYYY。日期格式是在資料載入指令碼的 `SET DateFormat` 陳述式中指定。由於地區設定和其他因素，您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式，以滿足您的需求。或者，您可以在載入指令碼中變更格式，以符合這些範例。如需詳細資訊，請參閱 [修改用於應用程式和指令碼的區域設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)。

應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。

若您是應用程式建立者，可以為您建立的應用程式設定預設地區。如需詳細資訊，請參閱[Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)。

## 範例 1 – DateFormat 資料集 (指令碼)

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

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到名為 `Master Calendar` 之表格中的日期資料集。

* 使用預設 `DateFormat` 系統變數 MM/DD/YYYY。

* 使用 `year()` 函數建立附加欄位 `year` 的前置載入。

載入指令碼

```
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/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/year.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入到名為 `Master Calendar` 之表格中的日期資料集。

* 使用預設 `DateFormat` 系統變數 MM/DD/YYYY。不過，資料集中包括的日期屬於 ANSI 標準日期格式。

* 使用 `year()` 函數建立附加欄位 `year` 的前置載入。

載入指令碼

```
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/cloud-services/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/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/year.htm)

#### 載入指令碼和圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的索引標籤。

在此範例中，順序資料集會載入到名為銷售的表格中。表格含有三個欄位：

* 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 年。