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

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

構文:

DayEnd(time[, [period\_no[, day\_start]])

dayend の使用目的

`  dayend() ` 関数は、ユーザーがまだ発生していない日の端数を計算に使用する場合に、数式の一部として一般的に使用されます。例えば、日中にまだ発生する総費用を計算します。

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

引数

| 引数 | 説明 |
| --- | --- |
| time | 評価するタイムスタンプ。 |
| period\_no | period\_no は整数または計算結果が整数になる数式で、値 0 は time を含む日を示します。period\_no の値が負の場合は過去の日を、正の場合は将来の日を示します。 |
| day\_start | 1 日の開始時刻を深夜 0 時以外に設定する場合は、day\_start に 1 日未満の長さを補正値として指定します。例えば、0.125 は午前 3 時を意味します。<br><br>つまり、オフセットを作るには、開始時刻を 24 時間で割り算してください。たとえば、1 日が午前 7:00 に始まる場合は、分数 7/24 を使用します。 |

## リージョンの設定

特に指定のない限り、このトピックの例では 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)」を参照してください。

関数の例

| 例 | 結果 |
| --- | --- |
| dayend('01/25/2013 16:45:00') | 01/25/2013 23:59:59 を返します。PM |
| dayend('01/25/2013 16:45:00', -1) | 01/24/2013 23:59:59 を返します。PM |
| dayend('01/25/2013 16:45:00', 0, 0.5) | 01/26/2013 11:59:59 を返します。PM |

## 例 1 - 基本的なスクリプト

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

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

概要

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

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

* 日付のリストを含むデータセットは、「Calendar」という名前のテーブルにロードされます。

* 既定の `DateFormat` システム変数 `(MM/DD/YYYY)`。

* `dayend()` 関数を使用して、追加の項目「`EOD_timestamp`」を作成するための先行する LOAD。

ロード スクリプト

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 

Calendar: 
    Load 
      date, 
      dayend(date) as EOD_timestamp 
      ; 
Load 
date 
Inline  
[ 
date 
03/11/2022 1:47:15 AM 
03/12/2022 4:34:58 AM 
03/13/2022 5:15:55 AM 
03/14/2022 9:25:14 AM 
03/15/2022 10:06:54 AM 
03/16/2022 10:44:42 AM 
03/17/2022 11:33:30 AM 
03/18/2022 12:58:14 PM 
03/19/2022 4:23:12 PM 
03/20/2022 6:42:15 PM 
03/21/2022 7:41:16 PM 
]; 
```

結果

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

* `date`

* `EOD_timestamp`

結果テーブル

| date | EOD\_timestamp |
| --- | --- |
| 03/11/2022 1:47:15 AM | 3/11/2022 11:59:59 PM |
| 03/12/2022 4:34:58 AM | 3/12/2022 11:59:59 PM |
| 03/13/2022 5:15:55 AM | 3/13/2022 11:59:59 PM |
| 03/14/2022 9:25:14 AM | 3/14/2022 11:59:59 PM |
| 03/15/2022 10:06:54 AM | 3/15/2022 11:59:59 PM |
| 03/16/2022 10:44:42 AM | 3/16/2022 11:59:59 PM |
| 03/17/2022 11:33:30 AM | 3/17/2022 11:59:59 PM |
| 03/18/2022 12:58:14 PM | 3/18/2022 11:59:59 PM |
| 03/19/2022 4:23:12 PM | 3/19/2022 11:59:59 PM |
| 03/20/2022 6:42:15 PM | 3/20/2022 11:59:59 PM |
| 03/21/2022 7:41:16 PM | 3/21/2022 11:59:59 PM |

上のテーブルからわかるように、データセット内の日付ごとに 1 日の終わりのタイムスタンプが生成されます。タイムスタンプはシステム変数 `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT` の形式です。

## 例 2 – period\_no

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

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

概要

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

サービス予約を含むデータセットを「Services」という名前のテーブルにロードします。

データセットには次の項目が含まれています。

* `service_id`

* `service_date`

* `amount`

テーブルに 2 つの新しい項目を作成します。

* `deposit_due_date`: デポジットを受け取る日付。これは、`service_date` の 3 日前の 1 日の終わりです。

* `final_payment_due_date`: 最終的な支払いを受け取る日付。これは、`service_date` の 7 日後の 1 日の終わりです。

上記の 2 つの項目は、`dayend()` 関数を使用して先行するロードで作成され、最初の2つのパラメータ `time` と `period_no` を提供します。

ロード スクリプト

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 
						
Services: 
   Load 
     *, 
     dayend(service_date,-3) as deposit_due_date, 
     dayend(service_date,7) as final_payment_due_date 
     ; 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

結果

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

* `service_date`

* `deposit_due_date`

* `final_payment_due_date`

結果テーブル

| service\_date | deposit\_due\_date | final\_payment\_due\_date |
| --- | --- | --- |
| 03/11/2022 9:25:14 AM | 3/8/2022 11:59:59 PM | 3/18/2022 11:59:59 PM |
| 03/12/2022 10:06:54 AM | 3/9/2022 11:59:59 PM | 3/19/2022 11:59:59 PM |
| 03/13/2022 10:44:42 AM | 3/10/2022 11:59:59 PM | 3/20/2022 11:59:59 PM |
| 03/14/2022 11:33:30 AM | 3/11/2022 11:59:59 PM | 3/21/2022 11:59:59 PM |
| 03/15/2022 12:58:14 PM | 3/12/2022 11:59:59 PM | 3/22/2022 11:59:59 PM |
| 03/16/2022 4:23:12 PM | 3/13/2022 11:59:59 PM | 3/23/2022 11:59:59 PM |
| 03/17/2022 6:42:15 PM | 3/14/2022 11:59:59 PM | 3/24/2022 11:59:59 PM |
| 03/18/2022 7:41:16 PM | 3/15/2022 11:59:59 PM | 3/25/2022 11:59:59 PM |
| 03/19/2022 8:14:15 PM | 3/16/2022 11:59:59 PM | 3/26/2022 11:59:59 PM |
| 03/20/2022 9:23:51 PM | 3/17/2022 11:59:59 PM | 3/27/2022 11:59:59 PM |
| 03/21/2022 10:04:41 PM | 3/18/2022 11:59:59 PM | 3/28/2022 11:59:59 PM |

新しい項目の値は `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT` にあります。関数 `dayend()` が使用されたため、タイムスタンプ値はすべてその日の最後のミリ秒です。

`dayend()` 関数で渡された 2 番目の引数が負であるため、デポジットの期日の値はサービス日の 3 日前です。

`dayend()` 関数で渡された 2 番目の引数が正であるため、最終的な支払期日の値はサービス日の 7 日後です。

## 例 3 – day\_start script

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

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

概要

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

この例で使用されているデータセットとシナリオは、前の例と同じです。

前の例のように、2つの新しい項目を作成します。

* `deposit_due_date`: デポジットを受け取る日付。これは、`service_date` の 3 日前の 1 日の終わりです。

* `final_payment_due_date`: 最終的な支払いを受け取る日付。これは、`service_date` の 7 日後の 1 日の終わりです。

ただし、あなたの会社は、営業日が 5 PM に始まり、翌日の 5 PM に終わるというポリシーの下で運営したいと考えています。これで、会社はそれらの営業時間内に発生するトランザクションを監視できます。

これらの要件を達成するために、`dayend()` 関数を使用して先行するロードで作成され、3 つの引数 `time`、`period_no`、`day_start` をすべて使用します。

ロード スクリプト

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 

Services: 
   Load 
     *, 
     dayend(service_date,-3,17/24) as deposit_due_date, 
     dayend(service_date,7,17/24) as final_payment_due_date 
     ; 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount 
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

結果

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

* `service_date`

* `deposit_due_date`

* `final_payment_due_date`

結果テーブル

| service\_date | deposit\_due\_date | final\_payment\_due\_date |
| --- | --- | --- |
| 03/11/2022 9:25:14 AM | 3/8/2022 4:59:59 PM | 3/18/2022 4:59:59 PM |
| 03/12/2022 10:06:54 AM | 3/9/2022 4:59:59 PM | 3/19/2022 4:59:59 PM |
| 03/13/2022 10:44:42 AM | 3/10/2022 4:59:59 PM | 3/20/2022 4:59:59 PM |
| 03/14/2022 11:33:30 AM | 3/11/2022 4:59:59 PM | 3/21/2022 4:59:59 PM |
| 03/15/2022 12:58:14 PM | 3/12/2022 4:59:59 PM | 3/22/2022 4:59:59 PM |
| 03/16/2022 4:23:12 PM | 3/13/2022 4:59:59 PM | 3/23/2022 4:59:59 PM |
| 03/17/2022 6:42:15 PM | 3/14/2022 4:59:59 PM | 3/24/2022 4:59:59 PM |
| 03/18/2022 7:41:16 PM | 3/15/2022 4:59:59 PM | 3/25/2022 4:59:59 PM |
| 03/19/2022 8:14:15 PM | 3/16/2022 4:59:59 PM | 3/26/2022 4:59:59 PM |
| 03/20/2022 9:23:51 PM | 3/17/2022 4:59:59 PM | 3/27/2022 4:59:59 PM |
| 03/21/2022 10:04:41 PM | 3/18/2022 4:59:59 PM | 3/28/2022 4:59:59 PM |

日付は例 2 と同じままですが、`dayend()` 関数に渡された 3 番目の引数 `day_start` の値が 17/24 であるため、日付のタイムスタンプは 5:00 PM より前の最後のミリ秒になりました。

## 例 4 – チャートの例

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

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

概要

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

この例で使用されているデータセットとシナリオは、前の 2 つの例と同じです。あなたの会社は、営業日が 5:00 PM に始まり、翌日の 5:00 PM に終わるというポリシーの下で運営したいと考えています。

前の例のように、2つの新しい項目を作成します。

* deposit\_due\_date: デポジットを受け取る日付。これは、service\_date の 3 日前の 1 日の終わりです。

* final\_payment\_due\_date: 最終的な支払いを受け取る日付。これは、service\_date の 7 日後の 1 日の終わりです。

ロード スクリプト

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 

Services: 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount 
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

結果

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

service\_date。

deposit\_due\_date 項目を作成するには、このメジャーを作成します。

=dayend(service\_date,-3,17/24)。

次に、final\_payment\_due\_date 項目を作成するには、次のメジャーを作成します:

=dayend(service\_date,7,17/24)。

結果テーブル

| service\_date | =dayend(service\_date,-3,17/24) | =dayend(service\_date,7,17/24) |
| --- | --- | --- |
| 03/11/2022 | 3/8/2022 16:59:59 PM | 3/18/2022 16:59:59 PM |
| 03/12/2022 | 3/9/2022 16:59:59 PM | 3/19/2022 16:59:59 PM |
| 03/13/2022 | 3/10/2022 16:59:59 PM | 3/20/2022 16:59:59 PM |
| 03/14/2022 | 3/11/2022 16:59:59 PM | 3/21/2022 16:59:59 PM |
| 03/15/2022 | 3/12/2022 16:59:59 PM | 3/22/2022 16:59:59 PM |
| 03/16/2022 | 3/13/2022 16:59:59 PM | 3/23/2022 16:59:59 PM |
| 03/17/2022 | 3/14/2022 16:59:59 PM | 3/24/2022 16:59:59 PM |
| 03/18/2022 | 3/15/2022 16:59:59 PM | 3/25/2022 16:59:59 PM |
| 03/19/2022 | 3/16/2022 16:59:59 PM | 3/26/2022 16:59:59 PM |
| 03/20/2022 | 3/17/2022 16:59:59 PM | 3/27/2022 16:59:59 PM |
| 03/21/2022 | 3/18/2022 16:59:59 PM | 3/28/2022 16:59:59 PM |

新しい項目の値は TimestampFormat M/D/YYYY h:mm:ss[.fff] TT にあります。関数 dayend() が使用されたため、タイムスタンプ値はすべてその日の最後のミリ秒です。

dayend() 関数で渡された 2 番目の引数が負であるため、支払期日の値はサービス日の 3 日前です。

dayend() 関数で渡された 2 番目の引数が正であるため、最終的な支払期日の値はサービス日の 7 日後です。

dayend() 関数に渡された 3 番目の引数 day\_start の値が 17/24 であるため、日付のタイムスタンプは 5:00 PM より前の最後のミリ秒です。

## 詳細を見る

* [事前にロードされているテーブルからのデータのロード](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm)

引数

| 引数 | 説明 |
| --- | --- |
| time | 評価するタイムスタンプ。 |
| period\_no | period\_no は整数または計算結果が整数になる数式で、値 0 は time を含む日を示します。period\_no の値が負の場合は過去の日を、正の場合は将来の日を示します。 |
| day\_start | 1 日の開始時刻を深夜 0 時以外に設定する場合は、day\_start に 1 日未満の長さを補正値として指定します。例えば、0.125 は午前 3 時を意味します。 |