# month - 指令碼與圖表函數

此函數會傳回雙值：一個如環境變數 MonthNames 中所定義的月份名稱，一個介於 1 與 12 之間的整數。月份是根據標準數字解譯，從運算式的日期解譯計算所得。

該函數針對特定日期以 `MonthName` 系統變數的格式傳回月份名稱。這通常用來建立日欄位，作為主要行事曆中的維度。

語法：

month(expression)

傳回的資料類型： 整數

函數範例

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

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

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

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

概述

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

載入指令碼包含：

* 名稱為 `Master_Calendar` 的日期資料集。`DateFormat` 系統變數設定為 DD/MM/YYYY。

* 使用 `  month() ` 函數建立附加欄位 (名稱為 `month_name`) 的前置載入。

* 名稱為 `long_date` 的附加欄位，使用 `date()` 函數表示完整日期。

載入指令碼

```

SET DateFormat='DD/MM/YYYY';

Master_Calendar:
Load
        date,
        date(date,'dd-MMMM-YYYY') as long_date,
        month(date) as month_name
Inline 
[
date
03/01/2022
03/02/2022
03/03/2022
03/04/2022
03/05/2022
03/06/2022
03/07/2022
03/08/2022
03/09/2022
03/10/2022
03/11/2022
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `date`

* `long_date`

* `month_name`

結果表格

| 日期 | long\_date | month\_name |
| --- | --- | --- |
| 03/01/2022 | 2022 年 1 月3 日 | 一月 |
| 03/02/2022 | 2022 年 2 月 3 日 | 二月 |
| 03/03/2022 | 2022 年 3 月 3 日 | 三月 |
| 03/04/2022 | 2022 年 4 月 3 日 | 四月 |
| 03/05/2022 | 2022 年 5 月 3 日 | 五月 |
| 03/06/2022 | 2022 年 6 月 3 日 | 六月 |
| 03/07/2022 | 2022 年 7 月 3 日 | 7 月 |
| 03/08/2022 | 2022 年 8 月 3 日 | 8 月 |
| 03/09/2022 | 2022 年 9 月 3 日 | 9 月 |
| 03/10/2022 | 2022 年 10 月 3 日 | 10 月 |
| 03/11/2022 | 2022 年 11 月 3 日 | 11 月 |

月份名稱目前由指令碼中的 `month()` 函數正確評估。

## 範例 2 – ANSI 日期 (指令碼)

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

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

概述

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

載入指令碼包含：

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

* 使用 month() 函數建立附加欄位 (名稱為 `month_name`) 的前置載入。

* 名稱為 `long_date` 的附加欄位，使用 date() 函數表示完整日期。

載入指令碼

```

SET DateFormat='DD/MM/YYYY'; 
Master_Calendar: 
Load 
       date, 
       date(date,'dd-MMMM-YYYY') as long_date, 
       month(date) as month_name 

Inline  
[ 
date 
2022-01-11 
2022-02-12 
2022-03-13 
2022-04-14 
2022-05-15 
2022-06-16 
2022-07-17 
2022-08-18 
2022-09-19
2022-10-20 
2022-11-21 
]; 
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `date`

* `long_date`

* `month_name`

結果表格

| 日期 | long\_date | month\_name |
| --- | --- | --- |
| 03/11/2022 | 2022 年 3 月 11 日 | 11 |
| 03/12/2022 | 2022 年 3 月 12 日 | 12 |
| 03/13/2022 | 2022 年 3 月 13 日 | 13 |
| 03/14/2022 | 2022 年 3 月 14 日 | 14 |
| 03/15/2022 | 2022 年 3 月 15 日 | 15 |
| 03/16/2022 | 2022 年 3 月 16 日 | 16 |
| 03/17/2022 | 2022 年 3 月 17 日 | 17 |
| 03/18/2022 | 2022 年 3 月 18 日 | 18 |
| 03/19/2022 | 2022 年 3 月 19 日 | 19 |
| 03/20/2022 | 2022 年 3 月 20 日 | 20 |
| 03/21/2022 | 2022 年 3 月 21 日 | 21 |

月份名稱目前由指令碼中的 `month()` 函數正確評估。

## 範例 3 – 未格式化的日期 (指令碼)

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

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

概述

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

載入指令碼包含：

* 名稱為 `Master_Calendar` 的日期資料集。使用 `  DateFormat ` 系統變數 DD/MM/YYYY。

* 使用 ` month()  ` 函數建立附加欄位 (名稱為 `month_name`) 的前置載入。

* 原始未格式化的日期，名稱為 `unformatted_date`。

* 名稱為 `long_date` 的附加欄位，使用 `  date() ` 函數表示完整日期。

載入指令碼

```

SET DateFormat='DD/MM/YYYY'; 

Master_Calendar: 
Load 
      unformatted_date, 
      date(unformatted_date,'dd-MMMM-YYYY') as long_date, 
      month(unformatted_date) as month_name 

Inline
[ 
unformatted_date 
44868 
44898 
44928 
44958 
44988 
45018 
45048 
45078 
45008 
45038 
45068 
]; 
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `unformatted_date`

* `long_date`

* `month_name`

結果表格

| unformatted\_date | long\_date | month\_name |
| --- | --- | --- |
| 44868 | 2022 年 1 月3 日 | 一月 |
| 44898 | 2022 年 2 月3 日 | 二月 |
| 44928 | 2022 年 3 月3 日 | 三月 |
| 44958 | 2022 年 4 月3 日 | 四月 |
| 44988 | 2022 年 5 月3 日 | 五月 |
| 45018 | 2022 年 6 月3 日 | 六月 |
| 45048 | 2022 年 7 月3 日 | 7 月 |
| 45078 | 2022 年 8 月3 日 | 8 月 |
| 45008 | 2022 年 9 月3 日 | 9 月 |
| 45038 | 2022 年 10 月3 日 | 10 月 |
| 45068 | 2022 年 11 月 3 日 | 11 月 |

月份名稱目前由指令碼中的 `month()` 函數正確評估。

## 範例 4 – 計算到期月份

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

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

概述

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

載入指令碼包含：

* 名稱為 `Subscriptions` 的三月下訂訂單資料集。表格含有三個欄位：

  * id

  * order\_date

  * 金額

載入指令碼

```

Subscriptions: 
Load 
	 id, 
	 order_date, 
	 amount 
Inline  
[ 
id,order_date,amount 
1,03/01/2022,231.24 
2,03/02/2022,567.28 
3,03/03/2022,364.28 
4,03/04/2022,575.76 
5,03/05/2022,638.68 
6,03/06/2022,785.38 
7,03/07/2022,967.46 
8,03/08/2022,287.67 
9,03/09/2022,764.45 
10,03/10/2022,875.43 
11,03/11/2022,957.35 
]; 

```

結果

載入資料並開啟工作表。建立新的表格並將此欄位新增為維度： `order_date`。

若要計算訂單到期的月份，建立此量值：`=month(order_date+180)`。

結果表格

| order\_date | =month(order\_date+180) |
| --- | --- |
| 03/01/2022 | 7 月 |
| 03/02/2022 | 8 月 |
| 03/03/2022 | 8 月 |
| 03/04/2022 | 9 月 |
| 03/05/2022 | 10 月 |
| 03/06/2022 | 11 月 |
| 03/07/2022 | 12 月 |
| 03/08/2022 | 一月 |
| 03/09/2022 | 三月 |
| 03/10/2022 | 四月 |
| 03/11/2022 | 五月 |

`month()` 函數正確判定在 3 月 11 日下訂的訂單會在 7 月到期。

## 瞭解更多資訊

* [從先前載入的表格載入資料](https://help.qlik.com/zh-TW/sense/November2024/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm)