# yearname 指令碼與圖表函數

此函數傳回四位數的年度為顯示值，其基礎數值相當於包含 date 的年度的第一天、第一毫秒的時間戳記。

`yearname()` 函數的時間範圍圖表。

`yearname()` 函數的時間範圍圖表。

`yearname()`yearname() 函數的時間範圍圖表。 ![圖表顯示 yearname 函數將會傳回結果的時間範圍。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearname-diagram1.png)

`yearname()` 函數不同於 `year()` 函數，因為這可讓您移動您要評估的日期，並設定該年的第一個月。

若該年的第一個月不是 1 月，該函數將會傳回跨越 12 個月期間並包含該日期的兩個四位數年份。例如，若該年於 4 月開始，而評估的日期為 2020 年 6 月 30 日，則傳回的結果會是 `2020-2021`。

將 4 月設定為該年第一個月的 `yearname()` 函數圖表。

將 4 月設定為該年第一個月的 `yearname()` 函數圖表。

將 4 月設定為該年第一個月的 `yearname()`yearname() 函數圖表。 ![圖表顯示 yearname 函數可識別 12 個月期間內的日期，其傳回的值取決於哪個月設定為該年的第一個月。](https://help.qlik.com/zh-TW/sense/May2026/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 | 如果要使用不起始於 1 月的 (會計) 年度，可在 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()` 函數很實用。例如，若您想要按年份查看產品的總銷售額。

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

## 區域設定

除非另有說明，否則此主題中的範例皆使用下列日期格式：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-TW/sense/May2026/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`」的表格中。

* 設定為「`MM/DD/YYYY`」的 `DateFormat` 系統變數。

* 使用 `yearname()` 並設定為 `year_name` 欄位的前置載入。

載入指令碼

```
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`

結果表格

| 日期 | 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 |

「`year_name`」欄位在前置 LOAD 陳述式中的建立方式是使用 `yearname()` 函數並傳遞日期欄位，作為函數的引數。

`yearname()` 函數識別日期值落在哪一年並傳回此作為四位數年份值。

`yearname()` 函數圖表顯示 2021 年為年份值。

`yearname()` 函數圖表顯示 2021 年為年份值。

`yearname()`yearname() 函數圖表顯示 2021 年為年份值。 ![圖表顯示 yearname() 函數對 2021 年 3 月 17 日的日期傳回 2021 年。](https://help.qlik.com/zh-TW/sense/May2026/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 年之間交易的資料集，這載入到稱為「Transactions」的表格中。

* 設定為「`MM/DD/YYYY`」的 DateFormat 系統變數。

* 使用 `yearname()` 並設定為 `year_name` 欄位的前置載入。

載入指令碼

```
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`

結果表格

| 日期 | 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 |

因為 `period_no` 的值 `-1` 作為 `yearname()` 函數中的偏移引數使用，所以該函數首先會識別交易發生的年份。然後該函數會往前移動一年並傳回產生的年份。

具有設定為 `-1` 之 `period_no` 的 `yearname()` 函數圖表。

具有設定為 `-1` 之 `period_no` 的 `yearname()` 函數圖表。

具有設定為 `-1`-1 之 `period_no`period\_no 的 `yearname()`yearname() 函數圖表。 ![圖表顯示負值 period_no 如何變更 yearname() 函數識別的時間範圍。](https://help.qlik.com/zh-TW/sense/May2026/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)

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

概述

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

載入指令碼包含：

* 資料集與第一個範例中相同。

* 設定為「`MM/DD/YYYY`」的 `DateFormat` 系統變數。

* 使用 `yearname()` 並設定為 `year_name` 欄位的前置載入。

載入指令碼

```
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`

結果表格

| 日期 | 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 |

因為 `4` 的 `first_month_of_year` 引數用於 `yearname()` 函數，所以該年的開始時間從 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。

將 3 月設定為該年第一個月的 `yearname()` 函數圖表。

將 3 月設定為該年第一個月的 `yearname()` 函數圖表。

將 3 月設定為該年第一個月的 `yearname()`yearname() 函數圖表。 ![圖表顯示 yearname() 函數的時間範圍識別該年的第一個月設定為 3 月](https://help.qlik.com/zh-TW/sense/May2026/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)

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

概述

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

載入指令碼包含：

* 資料集與第一個範例中相同。

* 設定為「`MM/DD/YYYY`」的 `DateFormat` 系統變數。

不過，傳回交易發生年份的欄位在圖表物件中作為量值來建立。

載入指令碼

```
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)`

結果表格

| 日期 | =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 |

「`year_name`」量值在圖表物件中的建立方式是使用 `yearname()` 函數並傳遞日期欄位，作為函數的引數。

`yearname()` 函數識別日期值落在哪一年並傳回此作為四位數年份值。

`yearname()` 函數圖表以 2021 年為年份值。

`yearname()` 函數圖表以 2021 年為年份值。

`yearname()`yearname() 函數圖表以 2021 年為年份值。 ![圖表顯示 yearname() 函數傳回 2021 作為年份值。](https://help.qlik.com/zh-TW/sense/May2026/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)

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

概述

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

載入指令碼包含：

* 資料集與第一個範例中相同。

* 設定為「MM/DD/YYYY」的 DateFormat 系統變數。

最終使用者希望圖表按季呈現交易的總銷售額。使用 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 |