# inmonth - 指令碼與圖表函數

此函數會傳回 True，前提是如果 timestamp 位於包含 base\_date 的月份中。

語法：

InMonth (timestamp, base\_date, period\_no)

`indaytotime` 函數的圖表。

`indaytotime` 函數的圖表。

`indaytotime`indaytotime 函數的圖表。 ![圖表顯示 inmonth 函數的條件。](https://help.qlik.com/zh-TW/sense/May2025/Subsystems/Hub/Content/Resources/Images/dr_Diagram_InMonth.png)

換言之，`inmonth()` 函數決定一組日期是否落在此月份當中，並根據識別該月份的 `base_date` 傳回布林值。

什麼情況下使用

`inmonth()` 函數會傳回布林值結果。通常，此函數類型將作為 `if expression` 中的條件使用。這根據日期是否發生於該月份中 (包括問題中的日期)，傳回彙總或計算。

例如，`inmonth()` 函數可用來識別在特定月份製造的所有設備。

傳回的資料類型： 布林

在 Qlik Sense 中，布林值 true 值以 -1 代表，而 false 值以 0 代表。

引數

| 引數 | 描述 |
| --- | --- |
| 時間戳記 | 您要與 `base_date` 比較的日期。 |
| base\_date | 用來評估月份的日期。注意，`base_date` 可以是月份內的任何日子，這很重要。 |
| period\_no | 月份可以使用 `period_no` 位移。`period_no` 是一個整數，其中值 0 表示包含 `base_date` 的月份。負值的 `period_no` 表示之前的月份，正值表示之後的月份。 |

## 區域設定

除非另有說明，否則此主題中的範例皆使用下列日期格式：MM/DD/YYYY。日期格式是在資料載入指令碼的 `SET DateFormat` 陳述式中指定。由於地區設定和其他因素，您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式，以滿足您的需求。或者，您可以在載入指令碼中變更格式，以符合這些範例。

應用程式中的預設地區設定是根據安裝 Qlik Sense 之電腦或伺服器的地區系統設定。若您存取的 Qlik Sense 伺服器設定為瑞典，資料載入編輯器將會對日期、時間和貨幣使用瑞典文地區設定。這些地區格式設定與 Qlik Sense 使用者介面中顯示的語言無關。Qlik Sense 顯示的語言將與您正在使用的瀏覽器相同。

函數範例

| 範例 | 結果 |
| --- | --- |
| ` inmonth ('25/01/2013', '01/01/2013', 0)  ` | 傳回 True |
| `inmonth('25/01/2013', '23/04/2013', 0)` | 傳回 False |
| ` inmonth ('25/01/2013', '01/01/2013', -1)  ` | 傳回 False |
| ` inmonth ('25/12/2012', '17/01/2013', -1)  ` | 傳回 True |

## 範例 1 – 無其他引數

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

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

概述

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

載入指令碼包含：

* 資料集包含 2022 年上半年的一組交易。

* 具有其他變數「`in_month`」的前置載入，可決定交易是否發生在 4 月。

載入指令碼

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

Transactions: 
  Load 
    *, 
    inmonth(date,'04/01/2022', 0) as in_month 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/10/2022',37.23 
8189,'1/14/2022',17.17 
8190,'1/20/2022',88.27 
8191,'1/22/2022',57.42 
8192,'2/1/2022',53.80 
8193,'2/2/2022',82.06 
8194,'2/20/2022',40.39 
8195,'4/11/2022',87.21 
8196,'4/13/2022',95.93 
8197,'4/15/2022',45.89 
8198,'4/25/2022',36.23 
8199,'5/20/2022',25.66 
8200,'5/22/2022',82.77 
8201,'6/19/2022',69.98 
8202,'6/22/2022',76.11 
]; 
```

結果

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

* `date`
* `in_month`

函數範例

| 日期 | in\_month |
| --- | --- |
| 1/10/2022 | 0 |
| 1/14/2022 | 0 |
| 1/20/2022 | 0 |
| 1/22/2022 | 0 |
| 2/1/2022 | 0 |
| 2/2/2022 | 0 |
| 2/20/2022 | 0 |
| 4/11/2022 | -1 |
| 4/13/2022 | -1 |
| 4/15/2022 | -1 |
| 4/25/2022 | -1 |
| 5/20/2022 | 0 |
| 5/22/2022 | 0 |
| 6/19/2022 | 0 |
| 6/22/2022 | 0 |

「`in_month`」欄位在前置 LOAD 陳述式中的建立方式是使用 `inmonth()` 函數並傳遞日期欄位，即 4 月 1 日的硬式編碼日期 (作為 `base_date`) 和值為 `0` 的 `period_no` 作為函數的引數。

`base_date` 識別將會傳回布林值結果 TRUE 的月份。因此，發生在 4 月的所有交易都會傳回 TRUE，這會在結果表格中驗證。

## 範例 2 – period\_no

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

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

概述

使用與第一個範例相同的資料集和情境。

不過，在此範例中，您將會建立欄位「`2_months_prior`」，這決定交易是否發生在 4 月前兩個月。

載入指令碼

```
SET DateFormat='MM/DD/YYYY'; 
 
Transactions: 
Load 
   *, 
   inmonth(date,'04/01/2022', -2) as [2_months_prior] 
Inline  
[ 
id,date,amount 
8188,'1/10/2022',37.23 
8189,'1/14/2022',17.17 
8190,'1/20/2022',88.27 
8191,'1/22/2022',57.42 
8192,'2/1/2022',53.80 
8193,'2/2/2022',82.06 
8194,'2/20/2022',40.39 
8195,'4/11/2022',87.21 
8196,'4/13/2022',95.93 
8197,'4/15/2022',45.89 
8198,'4/25/2022',36.23 
8199,'5/20/2022',25.66 
8200,'5/22/2022',82.77
8201,'6/19/2022',69.98 
8202,'6/22/2022',76.11 
]; 
```

結果

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

* `date`
* `2_months_prior`

函數範例

| 日期 | 2\_months\_prior |
| --- | --- |
| 1/10/2022 | 0 |
| 1/14/2022 | 0 |
| 1/20/2022 | 0 |
| 1/22/2022 | 0 |
| 2/1/2022 | -1 |
| 2/2/2022 | -1 |
| 2/20/2022 | -1 |
| 4/11/2022 | 0 |
| 4/13/2022 | 0 |
| 4/15/2022 | 0 |
| 4/25/2022 | 0 |
| 5/20/2022 | 0 |
| 5/22/2022 | 0 |
| 6/19/2022 | 0 |
| 6/22/2022 | 0 |

使用 -2 作為 `inmonth()` 函數中的 `period_no` 引數，讓 `base_date` 引數定義的月份往前移動兩個月。在此範例中，這會將定義的月份從 4 月變更為 2 月。

因此，發生在 2 月的任何交易將會傳回布林值結果 TRUE。

## 範例 3 – 圖表物件

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

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

概述

使用與先前範例相同的資料集和情境。

不過，在此範例中，資料集保持不變並且會載入到應用程式中。會建立決定交易是否發生在 4 月的計算，作為應用程式圖表物件中的量值。

載入指令碼

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

Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/10/2022',37.23 
8189,'1/14/2022',17.17 
8190,'1/20/2022',88.27 
8191,'1/22/2022',57.42 
8192,'2/1/2022',53.80 
8193,'2/2/2022',82.06 
8194,'2/20/2022',40.39 
8195,'4/11/2022',87.21 
8196,'4/13/2022',95.93 
8197,'4/15/2022',45.89 
8198,'4/25/2022',36.23 
8199,'5/20/2022',25.66 
8200,'5/22/2022',82.77 
8201,'6/19/2022',69.98 
8202,'6/22/2022',76.11 
]; 
```

圖表物件

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

`date`

若要計算交易是否發生在 4 月，建立下列量值：

`=inmonth(date,'04/01/2022', 0)`

結果

函數範例

| 日期 | =inmonth(date,'04/01/2022', 0) |
| --- | --- |
| 1/10/2022 | 0 |
| 1/14/2022 | 0 |
| 1/20/2022 | 0 |
| 1/22/2022 | 0 |
| 2/1/2022 | 0 |
| 2/2/2022 | 0 |
| 2/20/2022 | 0 |
| 4/11/2022 | -1 |
| 4/13/2022 | -1 |
| 4/15/2022 | -1 |
| 4/25/2022 | -1 |
| 5/20/2022 | 0 |
| 5/22/2022 | 0 |
| 6/19/2022 | 0 |
| 6/22/2022 | 0 |

## 範例 4 – 情境

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

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

概述

在此範例中，資料集會載入到稱為「`Products`」的表格中。該表格含有下列欄位：

* 產品 ID

* 製造日期

* 成本價格

由於設備錯誤，在 2022 年 7 月製造的產品有瑕疵。問題已於 2022 年 7 月 27 日解決。

最終使用者希望圖表依月份顯示製造時為「瑕疵」(布林值 TURE) 或「故障」(布林值 FALSE) 的產品狀態，以及在該月份製造的產品成本。

載入指令碼

```
Products: 
Load 
* 
Inline  
[ 
product_id,manufacture_date,cost_price 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

結果

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

`=monthname(manufacture_date)`

建立下列量值

* `=sum(cost_price)`

* `=if(only(inmonth(manufacture_date,makedate(2022,07,01),0)),'Defective','Faultless')`

1. 將量值的數字格式設定為金錢。

2. 在外觀之下，關閉總計。

結果表格

| monthname(manufacture\_date) | =if(only(inmonth(manufacture\_date,makedate(2022,07,01),0)),'Defective','Faultless') | sum(cost\_price) |
| --- | --- | --- |
| 2022 年 1 月 | 無缺失 | $54.40 |
| 2022 年 2 月 | 無缺失 | $145.69 |
| 2022 年 3 月 | 無缺失 | $53.80 |
| 2022 年 4 月 | 無缺失 | $82.06 |
| 2022 年 5 月 | 無缺失 | $127.60 |
| 2022 年 6 月 | 無缺失 | $141.82 |
| 2022 年 7 月 | 瑕疵 | $214.64 |
| 2022 年 8 月 | 無缺失 | $147.46 |
| 2022 年 9 月 | 無缺失 | $84.21 |
| 2022 年 10 月 | 無缺失 | $163.91 |

`inmonth()` 函數會在評估每個產品的製造日期時傳回布林值。對於在 2022 年 7 月製造的任何產品，`inmonth()` 函數會傳回布林值 True 並將產品標記為「瑕疵」。對於傳回 False 值的任何產品 (因此這不是在 7 月製造)，會將產品標記為「無缺失」。