# addmonths スクリプトおよびチャート関数

この関数は、startdate 後の n か月後の日付、またはn が負の場合には startdate の n か月前の日付を返します。

構文:

AddMonths(startdate, n , [ , mode])

戻り値データ型： デュアル

`addmonths()` 関数は、`startdate` に対して定義された月数 `n` を加算または減算し、結果の日付を返します。

`mode` 引数は、月の 28 日以降の `startdate` 値に影響します。`mode` 引数を 1 に設定することにより、`addmonths()` 関数は月末までの相対距離が `startdate` と等しい日付を返します。

`addmonths()` 関数の図の例

`addmonths()` 関数の図の例

`addmonths()`addmonths() 関数の図の例 ![addmonths 関数のさまざまなコンポーネントがどのように組み合わされて、出力日付が生成されるかを示す例の図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-addmonths-overview.png)

例えば、2 月 28 日は月の最終日です。`mode` が 1 である `addmonths()` 関数が 2 か月後の日付を返すのに使用される場合、関数は 4 月の月末日である 4 月 30 日を返します。

`mode=1` がある `addmonths()` 関数の例の図

`mode=1` がある `addmonths()` 関数の例の図

`mode=1`mode=1 がある `addmonths()`addmonths() 関数の例の図 ![addmonths 関数の出力日付を変更するために 'mode' 引数を変更する方法を示す例の図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-addmonths-overview-n-mode-arguments.png)

引数

| 引数 | 説明 |
| --- | --- |
| startdate | タイムスタンプの開始日。例: '2012-10-12' |
| n | 正または負の整数の月数。 |
| mode | 該当する月が、その月の始めを基準として追加されるのか、または終わりを基準として追加されるのかを指定します。既定のモードは 0 で、月の始めを基準として追加されます。月の終わりを基準として追加する場合は、モードを 1 に設定します。モードが 1 に設定されていて、入力日付が 28 日以降の場合、関数では開始日付の月の終わりに到達するまでの残りの日数を確認します。返される日付では、月の終わりに達するまでと同じ日数が設定されます。 |

## addmonths の使用目的

`addmonths()` 関数は、特定期間の所定の月数前後の日付を見つけるための式に一般的に使用されます。

例えば、`addmonths()` 関数は携帯電話契約の終了日付を特定するのに使用できます。

関数の例

| 例 | 結果 |
| --- | --- |
| `addmonths ('01/29/2003' ,3)` | 「04/29/2003」を返します |
| `addmonths ('01/29/2003',3,0)` | 「04/29/2003」を返します |
| `addmonths ('01/29/2003',3,1)` | 「04/28/2003」を返します |
| `addmonths ('01/29/2003',1,0)` | 「02/28/2003」を返します |
| `addmonths ('01/29/2003',1,1)` | 「02/26/2003」を返します |
| `addmonths ('02/28/2003',1,0)` | 「03/28/2003」を返します |
| `addmonths ('02/28/2003',1,1)` | 「03/31/2003」を返します |
| `addmonths ('01/29/2003',-3)` | 「10/29/2002」を返します |

## リージョンの設定

特に指定のない限り、このトピックの例では MM/DD/YYYY の日付書式を使用しています。 日付書式は、データ ロード スクリプトの `SET DateFormat` ステートメントで指定されています。既定の日付書式は、リージョンの設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。詳しくは「[アプリケーションとスクリプトの地域設定の変更](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)」を参照してください。

アプリケーションの既定のリージョン設定は、ユーザー プロファイルに基づいています。これらのリージョンの書式設定は、Qlik Cloud ユーザー インターフェースに表示される言語とは関係ありません。Qlik Cloud は使用しているブラウザと同じ言語で表示されます。

アプリケーションの作成者は、作成するアプリケーションの既定のリージョンを設定できます。詳細については、「[Qlik Cloud Analytics でアプリとスクリプトを作成するための優先地域設定の設定](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)」を参照してください。

## 例 1 – 追加の引数なし

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

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* `Transactions` というテーブルにロードされる、2020 年～2022 年の一連のトランザクションを含むデータセット。

* `DateFormat` システム変数形式 (MM/DD/YYYY) で提供されている日付項目。

* トランザクション発生の 2 か月後の日付を返す項目 [`two_months_later`] の作成。

ロード スクリプト

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

Transactions:
    Load
        *,
        addmonths(date,2) as two_months_later
        ;
Load
*
Inline 
[
id,date,amount
8188,'01/10/2020',37.23
8189,'02/28/2020',17.17
8190,'04/09/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,'02/02/2022',46.23
8205,'02/26/2022',84.21
8206,'03/07/2022',96.24
8207,'03/11/2022',67.67
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `date`

* `two_months_later`

結果テーブル

| date | two\_months\_later |
| --- | --- |
| 01/10/2020 | 03/10/2020 |
| 02/28/2020 | 04/28/2020 |
| 04/09/2020 | 06/09/2020 |
| 04/16/2020 | 06/16/2020 |
| 05/21/2020 | 07/21/2020 |
| 08/14/2020 | 10/14/2020 |
| 10/07/2020 | 12/07/2020 |
| 12/05/2020 | 02/05/2021 |
| 01/22/2021 | 03/22/2021 |
| 02/03/2021 | 04/03/2021 |
| 03/17/2021 | 05/17/2021 |
| 04/23/2021 | 06/23/2021 |
| 05/04/2021 | 07/04/2021 |
| 06/30/2021 | 08/30/2021 |
| 07/26/2021 | 09/26/2021 |
| 12/27/2021 | 02/27/2022 |
| 02/02/2022 | 04/02/2022 |
| 02/26/2022 | 04/26/2022 |
| 03/07/2022 | 05/07/2022 |
| 03/11/2022 | 05/11/2022 |

[`two_months_later`] 項目は、`addmonths()` 関数を使用して、先行する LOAD ステートメントで作成されます。提供される最初の引数は、評価される日付を識別します。2 番目の引数は、`startdate` に対して加算または減算する月数です。この場合、値 2 が入力されます。

`addmonths()` 関数の図、追加の引数がない例

`addmonths()` 関数の図、追加の引数がない例

`addmonths()`addmonths() 関数の図、追加の引数がない例 ![ロード スクリプトのトランザクション 8193 が、入力日付から出力日付に変換される様子を示す addmonths 関数の図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-addmonths-examples-no-add-arg.png)

トランザクション 8193 は 8 月 14 日に発生しました。そのため、`addmonths()` 関数は [`two_months_later`] 項目に対して 2020 年 10 月 14 日を返します。

## 例 2 – 相対的月末

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

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* `Transactions` というテーブルにロードされる、2022 年の一連の月末トランザクションを含むデータセット。

* `DateFormat` システム変数形式 (MM/DD/YYYY) で提供されている日付項目。

* トランザクション発生の 2 か月前の相対的月末日付を返す項目 [`relative_two_months_prior`] の作成。

ロード スクリプト

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

Transactions:
    Load
        *,
        addmonths(date,-2,1) as relative_two_months_prior
        ;
Load
*
Inline 
[
id,date,amount
8188,'01/28/2022',37.23
8189,'01/31/2022',57.54
8190,'02/28/2022',17.17
8191,'04/29/2022',88.27
8192,'04/30/2022',57.42
8193,'05/31/2022',53.80
8194,'08/14/2022',82.06
8195,'10/07/2022',40.39
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `date`

* `relative_two_months_prior`

結果テーブル

| date | relative\_two\_months\_prior |
| --- | --- |
| 01/28/2022 | 11/27/2021 |
| 01/31/2022 | 11/30/2021 |
| 02/28/2022 | 12/31/2021 |
| 04/29/2022 | 02/27/2022 |
| 04/30/2022 | 02/28/2022 |
| 05/31/2022 | 03/31/2022 |
| 08/14/2022 | 06/14/2022 |
| 10/07/2022 | 08/07/2022 |

[`relative_two_months_prior`] 項目は、`addmonths()` 関数を使用して、先行 Load ステートメントで作成されます。提供される最初の引数は、評価される日付を識別します。2 番目の引数は、`startdate` に対して加算または減算する月数です。この場合、値 -2 が入力されます。最後の引数 (値は 1) はモードで、28 以上のすべての日付について、この関数が相対的月末の日付を計算するように強制します。

`  n=-2 ` の例がある `addmonths()` 関数の図

`  n=-2 ` の例がある `addmonths()` 関数の図

`  n=-2 ` n=-2 の例がある `addmonths()`addmonths() 関数の図 ![ロード スクリプトのトランザクション 8191 が、入力日付から出力日付に変換される様子を示す addmonths 関数の図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-addmonths-examples-rel-mth-end.png)

トランザクション 8191 は 2022 年 4 月 29 日に発生します。当初、2 か月前なら 2 月に設定されていました。次に、関数の第 3 引数でモードを 1 に、日付の値を 27 日よりも後に設定し、相対的月末の値を計算します。この関数は、29 日が 4 月の月末日から 2 日早い日付であることを識別し、2 月の月末日から 2 日早い日付である 27 日を返します。

## 例 3 – チャート オブジェクトの例

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

#### ロード スクリプトとチャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。

ロード スクリプトには、最初の例と同じデータセットとシナリオが含まれます。

ただし、この例では、変更されていないデータセットがアプリケーションにロードされます。トランザクション発生の 2 か月後の日付を返す計算は、チャート オブジェクトのメジャーとして作成されます。

ロード スクリプト

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

Transactions:
Load
*
Inline 
[
id,date,amount
8188,'01/10/2020',37.23
8189,'02/28/2020',17.17
8190,'04/09/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,'02/02/2022',46.23
8205,'02/26/2022',84.21
8206,'03/07/2022',96.24
8207,'03/11/2022',67.67
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:`date`。

次のメジャーを作成します:

`=addmonths(date,2)`

結果テーブル

| date | =addmonths(date,2) |
| --- | --- |
| 01/10/2020 | 03/10/2020 |
| 02/28/2020 | 04/28/2020 |
| 04/09/2020 | 06/09/2020 |
| 04/16/2020 | 06/16/2020 |
| 05/21/2020 | 07/21/2020 |
| 08/14/2020 | 10/14/2020 |
| 10/07/2020 | 12/07/2020 |
| 12/05/2020 | 02/05/2021 |
| 01/22/2021 | 03/22/2021 |
| 02/03/2021 | 04/03/2021 |
| 03/17/2021 | 05/17/2021 |
| 04/23/2021 | 06/23/2021 |
| 05/04/2021 | 07/04/2021 |
| 06/30/2021 | 08/30/2021 |
| 07/26/2021 | 09/26/2021 |
| 12/27/2021 | 02/27/2022 |
| 02/02/2022 | 04/02/2022 |
| 02/26/2022 | 04/26/2022 |
| 03/07/2022 | 05/07/2022 |
| 03/11/2022 | 05/11/2022 |

`two_months_later` メジャーは、 `addmonths()` 関数を使用してチャート オブジェクトに作成されます。提供される最初の引数は、評価される日付を識別します。2 番目の引数は、`startdate` に対して加算または減算する月数です。この場合、値 2 が入力されます。

`addmonths()` 関数の図、チャート オブジェクトの例

`addmonths()` 関数の図、チャート オブジェクトの例

`addmonths()`addmonths() 関数の図、チャート オブジェクトの例 ![ロード スクリプトのトランザクション 8193 が、入力日付から出力日付に変換される様子を示す addmonths 関数の図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-addmonths-examples-chart-object.png)

トランザクション 8193 は 8 月 14 日に発生しました。そのため、`addmonths()` 関数は [`two_months_later`] 項目に対して 2020 年 10 月 14 日を返します。

## 例 4 – シナリオ

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

#### ロード スクリプトとチャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 「Mobile\_Plans」というテーブルにロードされるデータセット。

* 契約 ID、開始日付、契約期間、月額料金の情報。

エンドユーザーは、契約 ID ごとに各電話契約の終了日を表示するチャート オブジェクトを希望しています。

ロード スクリプト

```
Mobile_Plans:
Load
*
Inline 
[
contract_id,start_date,contract_length,monthly_fee
8188,'01/13/2020',18,37.23
8189,'02/26/2020',24,17.17
8190,'03/27/2020',36,88.27
8191,'04/16/2020',24,57.42
8192,'05/21/2020',24,53.80
8193,'08/14/2020',12,82.06
8194,'10/07/2020',18,40.39
8195,'12/05/2020',12,87.21
8196,'01/22/2021',12,95.93
8197,'02/03/2021',18,45.89
8198,'03/17/2021',24,36.23
8199,'04/23/2021',24,25.66
8200,'05/04/2021',12,82.77
8201,'06/30/2021',12,69.98
8202,'07/26/2021',12,76.11
8203,'12/27/2021',36,25.12
8204,'06/06/2022',24,46.23
8205,'07/18/2022',12,84.21
8206,'11/14/2022',12,96.24
8207,'12/12/2022',18,67.67
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* contract\_id

* start\_date

* contract\_length

次のメジャーを作成して、各契約の終了日付を計算します。

=addmonths(start\_date,contract\_length, 0)

結果テーブル

| contract\_id | start\_date | contract\_length | =addmonths(start\_date,contract\_length,0) |
| --- | --- | --- | --- |
| 8188 | 01/13/2020 | 18 | 07/13/2021 |
| 8189 | 02/26/2020 | 24 | 02/26/2022 |
| 8190 | 03/27/2020 | 36 | 03/27/2023 |
| 8191 | 04/16/2020 | 24 | 04/16/2022 |
| 8192 | 05/21/2020 | 24 | 05/21/2022 |
| 8193 | 08/14/2020 | 12 | 08/14/2021 |
| 8194 | 10/07/2020 | 18 | 04/07/2022 |
| 8195 | 12/05/2020 | 12 | 12/05/2021 |
| 8196 | 01/22/2021 | 12 | 01/22/2022 |
| 8197 | 02/03/2021 | 18 | 08/03/2022 |
| 8198 | 03/17/2021 | 24 | 03/17/2023 |
| 8199 | 04/23/2021 | 24 | 04/23/2023 |
| 8200 | 05/04/2021 | 12 | 05/04/2022 |
| 8201 | 06/30/2021 | 12 | 06/30/2022 |
| 8202 | 07/26/2021 | 12 | 07/26/2022 |
| 8203 | 12/27/2021 | 36 | 12/27/2024 |
| 8204 | 06/06/2022 | 24 | 06/06/2024 |
| 8205 | 07/18/2022 | 12 | 07/18/2023 |
| 8206 | 11/14/2022 | 12 | 11/14/2023 |
| 8207 | 12/12/2022 | 18 | 06/12/2024 |