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

この関数は、base\_timestamp を含む日に timestamp が含まれている場合、True を返します。

構文:

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

`inday` 関数の図

`inday` 関数の図

`inday`inday 関数の図 ![inday 関数を使用して時間のセグメントを識別し、そのセグメントに基づいてブール値の結果を返す方法を示す図。](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inday-diagram.png)

`inday()` 関数は、`base_timestamp` 引数を使用して、タイムスタンプが該当する日を識別します。1 日の開始時刻は、既定では深夜です。 ただし、`inday()` 関数の `day_start` 引数を使用して、1 日の開始時刻を変更できます。この日が定義されると、関数は指定されたタイムスタンプ値をその日と比較するときにブール値の結果を返します。

inday の使用目的

`inday()` 関数はブール値の結果を返します。通常、このタイプの関数は `if expression` の条件として使用されます。これは、評価された日付が問題のタイムスタンプの日に発生したかどうかに応じて、集計または計算を返します。

例えば、`inday()` 関数を使用して、特定の日に製造されたすべての機器を識別することができます。

戻り値データ型： 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 日未満の長さを補正値として指定します。例えば、0.125 は午前 3 時を意味します。 |

## リージョンの設定

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

関数の例

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

## 例 1 – Load ステートメント (スクリプト)

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

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

概要

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

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

* `Transactions` というテーブルにロードされるタイムスタンプによるトランザクションを含むデータセット。

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

* `in_day` 項目として設定されている `inday()` 関数を含む先行する LOAD。

ロード スクリプト

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', 0) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

結果

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

* `date`

* `in_day`

結果テーブル

| date | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | -1 |
| 01/05/2022 7:04:57 PM | -1 |
| 01/06/2022 8:49:09 AM | 0 |

`` 項目は、`` 関数を使用し、日付項目、1 月 5 日のハードコードされたタイムスタンプ、関数の引数として 0 の `` を渡すことにより、前の load ステートメントで作成されます。in\_dayinday()period\_no`0`

## 例 2 – period\_no

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

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

概要

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

ただし、この例では、トランザクションの日付が 1 月 5 日の 2 日前に発生したかどうかを計算することがタスクです。

ロード スクリプト

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', -2) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

結果

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

* `date`

* `in_day`

結果テーブル

| date | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | -1 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | 0 |
| 01/05/2022 11:29:38 AM | 0 |
| 01/05/2022 7:04:57 PM | 0 |
| 01/06/2022 8:49:09 AM | 0 |

この場合、`inday()` 関数のオフセット引数として `-2` の `period_no` が使用されたため、この関数は、各トランザクションの日付が 1 月 3 日に発生したかどうかを判別します。これは、1 つのトランザクションが TRUE のブール結果を返す出力テーブルで確認できます。

## 例 3 – day\_start

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

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

概要

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

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

ロード スクリプト

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', 0, 7/24) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

結果

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

* `date`

* `in_day`

結果テーブル

| date | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | -1 |
| 01/04/2022 10:58:34 PM | -1 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | 0 |
| 01/05/2022 7:04:57 PM | 0 |
| 01/06/2022 8:49:09 AM | 0 |

7 時 AM である 7/24 の `start_day` 引数が `inday()` 関数で使用されているため、この関数は、各トランザクションの日付が 1 月 4 日の 7 時 AM から 1 月 5 日の 7 時 AM までに発生したかどうかを判別します。

これは、1 月 4 日の 7 時 AM 以降に発生したトランザクションが TRUE のブール結果を返し、1 月 5 日の 7 時 AM 以降に発生したトランザクションが FALSE のブール結果を返す出力テーブルで確認できます。

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

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

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

概要

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

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

ロード スクリプト

```

Transactions:
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

結果

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

* `date`

トランザクションが 1 月 5 日に行われるかどうかを計算するには、次のメジャーを作成します。

`=inday(date,'01/05/2022 12:00:00 AM',0)`

結果テーブル

| date | inday(date,'01/05/2022 12:00:00 AM',0) |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | -1 |
| 01/05/2022 7:04:57 PM | -1 |
| 01/06/2022 8:49:09 AM | 0 |

## 例 5 – シナリオ

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

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

概要

この例では、機器のエラーにより、1 月 5 日に製造された製品に欠陥があることが確認されています。エンド ユーザーは、製造された製品のステータスが「不具合」または「不具合なし」であったこと、および 1 月 5 日に製造された製品のコストを日付別に表示するチャート オブジェクトを希望しています。

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

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

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

* テーブルには次の項目が含まれています。

  * 製品 ID

  * 製造時間

  * コスト

ロード スクリプト

```

Products:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

結果

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

=dayname(manufacture\_date)

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

* =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Defective','Faultless')

* =sum(cost\_price)

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

[スタイル] で [合計] をオフにします。

結果テーブル

| dayname(manufacture\_date) | =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Defective','Faultless') | =sum(cost\_price) |
| --- | --- | --- |
| 01/01/2022 | 不具合なし | 44.67 |
| 01/02/2022 | 不具合なし | 36.34 |
| 01/03/2022 | 不具合なし | 51.75 |
| 01/04/2022 | 不具合なし | 89.69 |
| 01/05/2022 | 不具合 | 170.78 |
| 01/06/2022 | 不具合なし | 74.23 |

inday() 関数は、各製品の製造日を評価するときにブール値を返します。1 月 5 日に製造された製品の場合、inday() 関数はブール値 TRUE を返し、製品を「不具合」としてマークします。FALSE の値を返し、その日に製造されなかった製品については、その製品に「不具合なし」のマークが付けられます。