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

この関数は、date を含む年の最終日の最後のミリ秒のタイムスタンプに相当する値を返します。デフォルトの出力形式は、スクリプトに設定されている DateFormat です。

構文:

YearEnd( date[, period\_no[, first\_month\_of\_year = 1]])

つまり、`yearend()` 関数は、日付がどの年に該当するかを判断します。次に、その年の最後のミリ秒のタイムスタンプを日付形式で返します。年の最初の月は、既定では 1 月です。ただし、`yearend()` 関数で `first_month_of_year` 引数を使用して、どの月を最初に設定するかを変更することができます。

情報メモ `  yearend() ` 関数は `FirstMonthOfYear` システム変数を考慮しません。 `first_month_of_year` 引数を使用して変更しない限り、年は 1 月 1 日から始まります。

`yearend()` 関数の図。

`yearend()` 関数の図。

`yearend()`yearend() 関数の図。 ![yearend() 関数が、それが発生する日付と年度末を識別する方法を示す図。](https://help.qlik.com/ja-JP/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearend-diagram.png)

使用に適しているケース

`yearend()` 関数は、ユーザーがまだ発生していない年の端数を計算に使用する場合に、数式の一部として使用されます。たとえば、その年にまだ発生していない利息の合計を計算したい場合などに使います。

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

引数

| 引数 | 説明 |
| --- | --- |
| 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 values

| 月 | 値 |
| --- | --- |
| 2 月 | 2 |
| 3 月 | 3 |
| 4 月 | 4 |
| May | 5 |
| 6 月 | 6 |
| 7 月 | 7 |
| 8 月 | 8 |
| 9 月 | 9 |
| 10 月 | 10 |
| 11 月 | 11 |
| 12 月 | 12 |

## 地域の設定

特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの `SET DateFormat` ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。

App の既定の地域設定は、Qlik Sense がインストールされているコンピューターまたはサーバーの地域システム設定に基づいています。アクセスしている Qlik Sense サーバーがスウェーデンに設定されてい場合、データ ロード エディターは、日付、時間、および通貨にスウェーデンの地域設定を使用します。これらの地域の書式設定は、Qlik Sense ユーザー インターフェースに表示される言語とは関係ありません。Qlik Sense は使用しているブラウザと同じ言語で表示されます。

関数の例

| 例 | 結果 |
| --- | --- |
| ` yearend('10/19/2001')  ` | 12/31/2001 23:59:59 を返します。 |
| ` yearend('10/19/2001', -1)  ` | 12/31/2000 23:59:59 を返します。 |
| ` yearend('10/19/2001', 0, 4)  ` | 03/31/2002 23:59:59 を返します。 |

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

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

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

概要

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

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

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

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

* 次を含む、先行する LOAD ステートメント:

  * [`year_end`] 項目として設定されている `yearend()` 関数。

  * [`year_end_timestamp`] 項目として設定されている `Timestamp()` 関数。

ロード スクリプト

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

Transactions: 
    Load 
       *, 
       yearend(date) as year_end, 
       timestamp(yearend(date)) as year_end_timestamp 
       ; 
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_end`
* `year_end_timestamp`

結果テーブル

| ID | 日付 | year\_end | year\_end\_timestamp |
| --- | --- | --- | --- |
| 8188 | 01/13/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8189 | 02/26/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8190 | 03/27/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8191 | 04/16/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8192 | 05/21/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8193 | 08/14/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8194 | 10/07/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8195 | 12/05/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8196 | 01/22/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8197 | 02/03/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8198 | 03/17/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8199 | 04/23/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8200 | 05/04/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8201 | 06/30/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8202 | 07/26/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8203 | 12/27/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8204 | 06/06/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
| 8205 | 07/18/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
| 8206 | 11/14/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
| 8207 | 12/12/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |

「`year_end`」項目は、`  yearend() ` 関数を使用し、関数の引数として日付項目を渡すことにより、前の load ステートメントで作成されます。

`yearend()` 関数は、最初に日付値がどの年に該当するかを識別し、その年の最後のミリ秒のタイムスタンプを返します。

トランザクション 8199 が選択された `yearend()` 関数の図。

トランザクション 8199 が選択された `yearend()` 関数の図。

トランザクション 8199 が選択された `yearend()`yearend() 関数の図。 ![トランザクション 8199 が 2021 年 4 月 23 日に発生し、yearend() 関数がその年の最後のミリ秒を返す様子を示す図。](https://help.qlik.com/ja-JP/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearend-example1-diagram.png)

トランザクション 8199 は 2021 年 4 月 23 日に発生しました。 `yearend()` 関数は、その年の最後のミリ秒、つまり 12 月 31 日午後 11:59:59 を返します。

## 例 2 – period\_no

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

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

概要

最初の例と同じデータセットとシナリオが使用されます。

ただし、この例のタスクは、トランザクションが発生する前の年の最終日付タイムスタンプを返す項目「`previous_year_end`」を作成することです。

ロード スクリプト

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

Transactions: 
    Load 
       *, 
       yearend(date,-1) as previous_year_end, 
       timestamp(yearend(date,-1)) as previous_year_end_timestamp 
       ; 
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`
* `previous_year_end`
* `previous_ year_end_timestamp`

結果テーブル

| ID | 日付 | previous\_year\_end | previous\_year\_end\_timestamp |
| --- | --- | --- | --- |
| 8188 | 01/13/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
| 8189 | 02/26/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
| 8190 | 03/27/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
| 8191 | 04/16/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
| 8192 | 05/21/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
| 8193 | 08/14/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
| 8194 | 10/07/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
| 8195 | 12/05/2020 | 12/31/2019 | 12/31/2019 11:59:59 PM |
| 8196 | 01/22/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8197 | 02/03/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8198 | 03/17/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8199 | 04/23/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8200 | 05/04/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8201 | 06/30/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8202 | 07/26/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8203 | 12/27/2021 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8204 | 06/06/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8205 | 07/18/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8206 | 11/14/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8207 | 12/12/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |

`-1` の `period_no` が `yearend()` 関数でオフセット引数として使用されたため、関数は最初にトランザクションが発生した年を識別します。次に、1 年前を調べて、その年の最後のミリ秒を識別します。

period\_no が -1 の `yearend()` 関数の図。

period\_no が -1 の `yearend()` 関数の図。

period\_no が -1 の `yearend()`yearend() 関数の図。 ![period_no が -1 の場合、yearend() 関数が前年の最後のミリ秒を識別する様子を示す図。](https://help.qlik.com/ja-JP/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearend-example2-diagram.png)

トランザクション 8199 は 2021 年 4 月 23 日に発生します。`yearend()` 関数は、「`previous_year_end`」項目に対して、前の年の最後のミリ秒、つまり 12 月 31 日午後 11:59:59 を返します。

## 例 3 – first\_month\_of\_year

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

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

概要

最初の例と同じデータセットとシナリオが使用されます。

ただしこの例では、会社の方針により年度が 4 月 1 日に始まります。

ロード スクリプト

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

Transactions: 
    Load 
       *, 
       yearend(date,0,4) as year_end, 
       timestamp(yearend(date,0,4)) as year_end_timestamp 
       ; 
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_end`
* `year_end_timestamp`

結果テーブル

| ID | 日付 | year\_end | year\_end\_timestamp |
| --- | --- | --- | --- |
| 8188 | 01/13/2020 | 03/31/2020 | 3/31/2020 11:59:59 PM |
| 8189 | 02/26/2020 | 03/31/2020 | 3/31/2020 11:59:59 PM |
| 8190 | 03/27/2020 | 03/31/2020 | 3/31/2020 11:59:59 PM |
| 8191 | 04/16/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
| 8192 | 05/21/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
| 8193 | 08/14/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
| 8194 | 10/07/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
| 8195 | 12/05/2020 | 03/31/2021 | 3/31/2021 11:59:59 PM |
| 8196 | 01/22/2021 | 03/31/2021 | 3/31/2021 11:59:59 PM |
| 8197 | 02/03/2021 | 03/31/2021 | 3/31/2021 11:59:59 PM |
| 8198 | 03/17/2021 | 03/31/2021 | 3/31/2021 11:59:59 PM |
| 8199 | 04/23/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8200 | 05/04/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8201 | 06/30/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8202 | 07/26/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8203 | 12/27/2021 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8204 | 06/06/2022 | 03/31/2023 | 3/31/2023 11:59:59 PM |
| 8205 | 07/18/2022 | 03/31/2023 | 3/31/2023 11:59:59 PM |
| 8206 | 11/14/2022 | 03/31/2023 | 3/31/2023 11:59:59 PM |
| 8207 | 12/12/2022 | 03/31/2023 | 3/31/2023 11:59:59 PM |

`yearend()` 関数で `4` の `first_month_of_year` 引数が使用されているため、年の最初の日は 4 月 1 日、年の最後の日が 3 月 31 日に設定されます。

4 月を年の最初の月とする `yearend()` 関数の図。

4 月を年の最初の月とする `yearend()` 関数の図。

4 月を年の最初の月とする `yearend()`yearend() 関数の図。![first_month_of_year が 4 に設定されている場合に、yearend() 関数がどのように動作するかを示す図。](https://help.qlik.com/ja-JP/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearend-example3-diagram.png)

トランザクション 8199 は 2021 年 4 月 23 日に発生します。 `yearend()` 関数は年度初めを 4 月 1 日に設定するため、トランザクションの「`year_end`」値として 2022 年 3 月 31 日を返します。

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

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

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

概要

最初の例と同じデータセットとシナリオが使用されます。

ただし、この例では、データセットは変更されず、アプリケーションにロードされます。トランザクションが発生した年の終わりタイムスタンプを返す計算は、アプリケーションのチャート オブジェクトのメジャーとして作成されます。

ロード スクリプト

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

結果

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

* `id`
* `date`

トランザクションが発生した年度を計算するには、次のメジャーを作成します。

* `=yearend(date)`
* `=timestamp(yearend(date))`

結果テーブル

| ID | 日付 | =yearend(date) | =timestamp(yearend(date)) |
| --- | --- | --- | --- |
| 8188 | 01/13/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8189 | 02/26/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8190 | 03/27/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8191 | 04/16/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8192 | 05/21/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8193 | 08/14/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8194 | 10/07/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8195 | 12/05/2020 | 12/31/2020 | 12/31/2020 11:59:59 PM |
| 8196 | 01/22/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8197 | 02/03/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8198 | 03/17/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8199 | 04/23/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8200 | 05/04/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8201 | 06/30/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8202 | 07/26/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8203 | 12/27/2021 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8204 | 06/06/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
| 8205 | 07/18/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
| 8206 | 11/14/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |
| 8207 | 12/12/2022 | 12/31/2022 | 12/31/2022 11:59:59 PM |

「`end_of_year`」メジャーは、`yearend()` 関数を使用し、関数の引数として日付項目を渡すことにより、チャート オブジェクトで作成されます。

`yearend()` 関数は、最初に日付値がどの年に該当するかを識別し、その年の最後のミリ秒のタイムスタンプを返します。

トランザクション 8199 が 4 月に発生したことを示す `yearend()` 関数の図。

トランザクション 8199 が 4 月に発生したことを示す `yearend()` 関数の図。

トランザクション 8199 が 4 月に発生したことを示す `yearend()`yearend() 関数の図。![yearend() 関数が識別してタイムスタンプを返す時間の範囲を示す図。](https://help.qlik.com/ja-JP/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-yearend-example4-diagram.png)

トランザクション 8199 は 2021 年 4 月 23 日に発生します。 `yearend()` 関数は、その年の最後のミリ秒、つまり 12 月 31 日午後 11:59:59 を返します。

## 例 5 – シナリオ

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

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

概要

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

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

* 「Employee\_Expenses」というテーブルにロードされるデータセット。テーブルには次の項目が含まれています。

  * 従業員 ID

  * 従業員名

  * 各従業員の平均日次経費請求

エンド ユーザーは、従業員 ID と従業員名別に、その年の残りの期間にまだ発生する推定経費請求を表示するグラフ オブジェクトを求めています。会計年度は 1 月に始まります。

ロード スクリプト

```
Employee_Expenses: 
Load 
* 
Inline  
[ 
employee_id,employee_name,avg_daily_claim 
182,Mark, $15 
183,Deryck, $12.5  
184,Dexter, $12.5 
185,Sydney,$27 
186,Agatha,$18 
]; 
```

結果

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

* employee\_id

* employee\_name

予想される経費請求を計算するには、次のメジャーを作成します。

=(yearend(today(1))-today(1))\*avg\_daily\_claim

メジャーの [数値書式] を [通貨] に設定します。

結果テーブル

| employee\_id | employee\_name | =(yearend(today(1))-today(1))\*avg\_daily\_claim |
| --- | --- | --- |
| 182 | Mark | $3240.00 |
| 183 | Deryck | $2700.00 |
| 184 | Dexter | $2700.00 |
| 185 | Sydney | $5832.00 |
| 186 | Agatha | $3888.00 |

yearend() 関数は、今日の日付を唯一の引数として使用することにより、現在の年の終了日を返します。次に、その年の終了日から今日の日付を引くことによって、数式は今年の残りの日数を返します。

次に、この値に各従業員による 1 日あたりの平均経費請求額を乗算して、年度の残り期間に各従業員が行うと予想される請求の推定額を計算します。