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

この関数は、timestamp が base\_timestamp のミリ秒単位まで正確に base\_timestamp を含む日の範囲内にある場合、True を返します。

構文:

InDayToTime (timestamp, base\_timestamp, period\_no[, day\_start])

`indaytotime()` 関数は、その日のセグメント中にタイムスタンプ値が発生するタイミングに応じてブール値の結果を返します。このセグメントの開始境界は 1 日の始まりであり、既定では深夜に設定されています。1 日の始まりは、`indaytotime()` 関数の `day_start` 引数によって変更できます。日付セグメントの終了境界は、関数の `base_timestamp` 引数によって決定されます。

`indaytotime` 関数の図。

`indaytotime` 関数の図。

`indaytotime`indaytotime 関数の図。 ![indaytotime 関数の変数間の関係を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-indaytotime-diagram-overview.png)

indaytotime の使用目的

`indaytotime()` 関数はブール値の結果を返します。通常、このタイプの関数は `if expression` の条件として使用されます。`indaytotime()` 関数は、ベース タイムスタンプの時刻までの、日のセグメントでタイムスタンプが発生したかどうかに応じて、集計または計算を返します。

例えば、`indaytotime()` 関数を使用して、今日までに行われたショーのチケット販売の合計を表示できます。

戻り値データ型： Boolean

Qlik Sense では、真のブール値は -1 で表現され、偽の値は 0 で表現されます。

引数

| 引数 | 説明 |
| --- | --- |
| ` timestamp  ` | `base_timestamp` と比較したい日付と時刻。 |
| ` base_timestamp  ` | タイムスタンプの評価に使用する日付と時刻。 |
| ` period_no  ` | 日は `period_no` によって補正することができます。`period_no` は整数で、値 0 は `base_timestamp` を含む日を示します。`period_no` の値が負の場合は過去の日を、正の場合は将来の日を示します。 |
| ` day_start  ` | (オプション) 1 日の開始時刻を深夜 0 時以外に設定する場合は、`day_start` を使用して 1 日未満の長さを補正値として指定します。例えば、午前 3 時を表すには 0.125 を使用します。 |

## リージョンの設定

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

関数の例

| 例 | 結果 |
| --- | --- |
| `indaytotime` ('01/12/2006 12:23:00 PM', '01/12/2006 11:59:00 PM', 0) | True を返す |
| `indaytotime` ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', 0) | False を返す |
| `indaytotime` '01/11/2006 12:23:00 PM', '01/12/2006 11:59:00 PM', -1) | True を返す |

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

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

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

概要

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

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

* 1 月 4 日から 5 日までの一連のトランザクションを含むデータセットが、「トランザクション」と呼ばれるテーブルにロードされます。

* `TimeStamp` システム変数 `(M/D/YYYY h:mm:ss[.fff] TT)` 形式で提供される日付項目。

* 各トランザクションが 9:00 AM より前に行われるかどうかを決定する `'in_day_to_time'` 項目として設定された `indaytotime()` 関数を含む、先行する LOAD。

ロード スクリプト

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

Transactions:
    Load
        *,
        indaytotime(date,'01/05/2022 9:00:00 AM',0) as in_day_to_time
        ;
Load
*
Inline 
[
id,date,amount
8188,'01/04/2022 3:41:54 AM',25.66
8189,'01/04/2022 4:19:43 AM',87.21
8190,'01/04/2022 4:53:47 AM',53.80
8191,'01/04/2022 8:38:53 AM',69.98
8192,'01/04/2022 10:37:52 AM',57.42
8193,'01/04/2022 1:54:10 PM',45.89
8194,'01/04/2022 5:53:23 PM',82.77
8195,'01/04/2022 8:13:26 PM',36.23
8196,'01/04/2022 10:00:49 PM',76.11
8197,'01/05/2022 7:45:37 AM',82.06
8198,'01/05/2022 8:44:36 AM',17.17
8199,'01/05/2022 11:26:08 AM',40.39
8200,'01/05/2022 6:43:08 PM',37.23
8201,'01/05/2022 10:54:10 PM',88.27
8202,'01/05/2022 11:09:09 PM',95.93
];
```

結果

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

* `date`

* `in_day_to_time`

結果テーブル

| date | in\_day\_to\_time |
| --- | --- |
| 01/04/2022 3:41:54 AM | 0 |
| 01/04/2022 4:19:43 AM | 0 |
| 01/04/2022 04:53:47 AM | 0 |
| 01/04/2022 8:38:53 AM | 0 |
| 01/04/2022 10:37:52 AM | 0 |
| 01/04/2022 1:54:10 PM | 0 |
| 01/04/2022 5:53:23 PM | 0 |
| 01/04/2022 8:13:26 PM | 0 |
| 01/04/2022 10:00:49 PM | 0 |
| 01/05/2022 7:45:37 AM | -1 |
| 01/05/2022 8:44:36 AM | -1 |
| 01/05/2022 11:26:08 AM | 0 |
| 01/05/2022 6:43:08 PM | 0 |
| 01/05/2022 10:54:10 PM | 0 |
| 01/05/2022 11:09:09 PM | 0 |

例 1 9 時 AM の制限がある `indaytotime` 関数の図。

例 1 9 時 AM の制限がある `indaytotime` 関数の図。

例 1 9 時 AM の制限がある `indaytotime`indaytotime 関数の図。 ![9:00 の制限がある indaytotime() 関数を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-indaytotime-example1-diagram.png)

`in_day_to_time field` は、`indaytotime()` 関数を使用し、日付項目、1 月 5 日 9:00 AM のハードコードされたタイムスタンプ、関数の引数として 0 のオフセットを渡すことにより、前の load ステートメントで作成されます。1 月 5 日の 0 時 AM から 9 時 AM の間に発生するトランザクションはすべて TRUE を返します。

## 例 2 – period\_no

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

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

概要

ロード スクリプトは、最初の例で使用されたものと同じデータセットとシナリオを使用します。

ただし、この例では、トランザクションの日付が 1 月 5 日の 9 時 AM の 1 日前に発生したかどうかを計算します。

ロード スクリプト

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

Transactions:
    Load
        *,
        indaytotime(date,'01/05/2022 9:00:00 AM', -1) as in_day_to_time
        ;
Load
*
Inline 
[
id,date,amount
8188,'01/04/2022 3:41:54 AM',25.66
8189,'01/04/2022 4:19:43 AM',87.21
8190,'01/04/2022 4:53:47 AM',53.80
8191,'01/04/2022 8:38:53 AM',69.98
8192,'01/04/2022 10:37:52 AM',57.42
8193,'01/04/2022 1:54:10 PM',45.89
8194,'01/04/2022 5:53:23 PM',82.77
8195,'01/04/2022 8:13:26 PM',36.23
8196,'01/04/2022 10:00:49 PM',76.11
8197,'01/05/2022 7:45:37 AM',82.06
8198,'01/05/2022 8:44:36 AM',17.17
8199,'01/05/2022 11:26:08 AM',40.39
8200,'01/05/2022 6:43:08 PM',37.23
8201,'01/05/2022 10:54:10 PM',88.27
8202,'01/05/2022 11:09:09 PM',95.93
];
```

結果

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

* `date`

* `in_day_to_time`

結果テーブル

| date | in\_day\_to\_time |
| --- | --- |
| 01/04/2022 3:41:54 AM | -1 |
| 01/04/2022 4:19:43 AM | -1 |
| 01/04/2022 04:53:47 AM | -1 |
| 01/04/2022 8:38:53 AM | -1 |
| 01/04/2022 10:37:52 AM | 0 |
| 01/04/2022 1:54:10 PM | 0 |
| 01/04/2022 5:53:23 PM | 0 |
| 01/04/2022 8:13:26 PM | 0 |
| 01/04/2022 10:00:49 PM | 0 |
| 01/05/2022 7:45:37 AM | 0 |
| 01/05/2022 8:44:36 AM | 0 |
| 01/05/2022 11:26:08 AM | 0 |
| 01/05/2022 6:43:08 PM | 0 |
| 01/05/2022 10:54:10 PM | 0 |
| 01/05/2022 11:09:09 PM | 0 |

例 2 1 月 4 日からのトランザクションを使用した `indaytotime` 関数の図。

例 2 1 月 4 日からのトランザクションを使用した `indaytotime` 関数の図。

例 2 1 月 4 日からのトランザクションを使用した `indaytotime`indaytotime 関数の図。 ![-1 の period_no を使用して 1 月 4 日からのトランザクションを返す indaytotime () 関数を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-indaytotime-example2-diagram.png)

この例では、`indaytotime()` 関数のオフセット引数として -1 のオフセットが使用されたため、この関数は、各トランザクションの日付が 1 月 4 日の 9 時 AM より前に発生したかどうかを判別します。これは、トランザクションが TRUE のブール結果を返す出力テーブルで確認できます。

## 例 3 – day\_start

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

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

概要

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

ただし、この例では、会社のポリシーでは、就業日は 8 時 AM に開始および終了します。

ロード スクリプト

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

Transactions:
    Load
        *,
        indaytotime(date,'01/05/2022 9:00:00 AM', 0,8/24) as in_day_to_time
        ;
Load
*
Inline 
[
id,date,amount
8188,'01/04/2022 3:41:54 AM',25.66
8189,'01/04/2022 4:19:43 AM',87.21
8190,'01/04/2022 4:53:47 AM',53.80
8191,'01/04/2022 8:38:53 AM',69.98
8192,'01/04/2022 10:37:52 AM',57.42
8193,'01/04/2022 1:54:10 PM',45.89
8194,'01/04/2022 5:53:23 PM',82.77
8195,'01/04/2022 8:13:26 PM',36.23
8196,'01/04/2022 10:00:49 PM',76.11
8197,'01/05/2022 7:45:37 AM',82.06
8198,'01/05/2022 8:44:36 AM',17.17
8199,'01/05/2022 11:26:08 AM',40.39
8200,'01/05/2022 6:43:08 PM',37.23
8201,'01/05/2022 10:54:10 PM',88.27
8202,'01/05/2022 11:09:09 PM',95.93
];
```

結果

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

* `date`

* `in_day_to_time`

結果テーブル

| date | in\_day\_to\_time |
| --- | --- |
| 01/04/2022 3:41:54 AM | 0 |
| 01/04/2022 4:19:43 AM | 0 |
| 01/04/2022 04:53:47 AM | 0 |
| 01/04/2022 8:38:53 AM | 0 |
| 01/04/2022 10:37:52 AM | 0 |
| 01/04/2022 1:54:10 PM | 0 |
| 01/04/2022 5:53:23 PM | 0 |
| 01/04/2022 8:13:26 PM | 0 |
| 01/04/2022 10:00:49 PM | 0 |
| 01/05/2022 7:45:37 AM | 0 |
| 01/05/2022 8:44:36 AM | -1 |
| 01/05/2022 11:26:08 AM | 0 |
| 01/05/2022 6:43:08 PM | 0 |
| 01/05/2022 10:54:10 PM | 0 |
| 01/05/2022 11:09:09 PM | 0 |

例 3 8 時 AM から 9 時 AM までのトランザクションを使用した `indaytotime` 関数の図。

例 3 8 時 AM から 9 時 AM までのトランザクションを使用した `indaytotime` 関数の図。

例 3 8 時 AM から 9 時 AM までのトランザクションを使用した `indaytotime`indaytotime 関数の図。 ![8:00am から 9:00am までのトランザクションを示す indaytotime() 関数を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-indaytotime-example3-diagram.png)

`indaytotime()` 関数では 8/24 の `start_day` 引数 (8:00 AM に相当) が使用されているため、毎日 8:00 AM に開始および終了します。したがって、`indaytotime()` 関数は、1 月 5 日の 8:00 AM から 9:00 AM の間に発生したトランザクションに対して TRUE のブール値の結果を返します。

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

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

#### の数式

概要

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

ただし、この例ではデータセットは変更されず、アプリケーションにロードされます。チャート オブジェクトにメジャーを作成することにより、1 月 5 日の 9 時 AM より前にトランザクションが発生するかどうかを判断するために計算します。

ロード スクリプト

```

Transactions:
Load
*
Inline 
[
id,date,amount
8188,'01/04/2022 3:41:54 AM',25.66
8189,'01/04/2022 4:19:43 AM',87.21
8190,'01/04/2022 4:53:47 AM',53.80
8191,'01/04/2022 8:38:53 AM',69.98
8192,'01/04/2022 10:37:52 AM',57.42
8193,'01/04/2022 1:54:10 PM',45.89
8194,'01/04/2022 5:53:23 PM',82.77
8195,'01/04/2022 8:13:26 PM',36.23
8196,'01/04/2022 10:00:49 PM',76.11
8197,'01/05/2022 7:45:37 AM',82.06
8198,'01/05/2022 8:44:36 AM',17.17
8199,'01/05/2022 11:26:08 AM',40.39
8200,'01/05/2022 6:43:08 PM',37.23
8201,'01/05/2022 10:54:10 PM',88.27
8202,'01/05/2022 11:09:09 PM',95.93
];
```

結果

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

`date`。

トランザクションが 1 月 5 日の 9:00 AM より前に行われるかどうかを判断するには、次のメジャーを作成します。

`=indaytotime(date,'01/05/2022 9:00:00 AM',0)`

結果テーブル

| date | =indaytotime(date,'01/05/2022 9:00:00 AM',0) |
| --- | --- |
| 01/04/2022 3:41:54 AM | 0 |
| 01/04/2022 4:19:43 AM | 0 |
| 01/04/2022 04:53:47 AM | 0 |
| 01/04/2022 8:38:53 AM | 0 |
| 01/04/2022 10:37:52 AM | 0 |
| 01/04/2022 1:54:10 PM | 0 |
| 01/04/2022 5:53:23 PM | 0 |
| 01/04/2022 8:13:26 PM | 0 |
| 01/04/2022 10:00:49 PM | 0 |
| 01/05/2022 7:45:37 AM | -1 |
| 01/05/2022 8:44:36 AM | -1 |
| 01/05/2022 11:26:08 AM | 0 |
| 01/05/2022 6:43:08 PM | 0 |
| 01/05/2022 10:54:10 PM | 0 |
| 01/05/2022 11:09:09 PM | 0 |

`in_day_to_time` メジャーは、`indaytotime()` 関数を使用し、日付項目、1 月 5 日 9:00 AM のハードコードされたタイムスタンプ、関数の引数として `0` のオフセットを渡すことにより、チャート オブジェクトで作成されます。1 月 5 日の 0 時 AM から 9 時 AM の間に発生するトランザクションはすべて TRUE を返します。これは、結果テーブルで検証されます。

## 例 5 – シナリオ

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

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

概要

この例では、地元の映画館のチケット販売を含むデータセットが、Ticket\_Sales というテーブルにロードされます。今日は 2022 年 5 月 3 日、11:00 AM です。

ユーザーは、KPI チャート オブジェクトに、今日までに行われたすべてのショーから得られた収益を表示したいと考えています。

ロード スクリプト

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

Ticket_Sales:
Load
*
Inline 
[
sale ID, show time, ticket price
1,05/01/2022 09:30:00 AM,10.50
2,05/03/2022 05:30:00 PM,21.00
3,05/03/2022 09:30:00 AM,10.50
4,05/03/2022 09:30:00 AM,31.50
5,05/03/2022 09:30:00 AM,10.50
6,05/03/2022 12:00:00 PM,42.00
7,05/03/2022 12:00:00 PM,10.50
8,05/03/2022 05:30:00 PM,42.00
9,05/03/2022 08:00:00 PM,31.50
10,05/04/2022 10:30:00 AM,31.50
11,05/04/2022 12:00:00 PM,10.50
12,05/04/2022 05:30:00 PM,10.50
13,05/05/2022 05:30:00 PM,21.00
14,05/06/2022 12:00:00 PM,21.00
15,05/07/2022 09:30:00 AM,42.00
16,05/07/2022 10:30:00 AM,42.00
17,05/07/2022 10:30:00 AM,10.50
18,05/07/2022 05:30:00 PM,10.50
19,05/08/2022 05:30:00 PM,21.00
20,05/11/2022 09:30:00 AM,10.50
];
```

結果

以下を実行します。

1. KPI オブジェクトを作成します。

2. indaytotime() 関数を使用して、今日までに行われたショーのすべてのチケット販売の合計を表示するメジャーを作成します。

=sum(if(indaytotime([show time],'05/03/2022 11:00:00 AM',0),[ticket price],0))

1. KPI オブジェクトのラベル「現在の収益」を作成します。

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

2022 年 5 月 3 日の 11:00 AM までのチケット販売の合計は 52.50 ドルです。

indaytotime () 関数は、各チケット販売の表示時間を現在の時刻 (05/03/2022 11:00:00 AM」) と比較するときにブール値を返します。5 月 3 日の 11:00 AM より前のショーの場合、indaytotime () 関数はブール値 TRUE を返し、そのチケット価格は合計に含まれます。