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

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

構文:

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

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

引数

| 引数 | 説明 |
| --- | --- |
| 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 を使用します。 |

## daystart の使用目的

`daystart()` 関数は、ユーザーがこれまで経過した日の端数を計算に使用する場合に、数式の一部として一般的に使用されます。例えば、その日これまでに従業員が稼いだ合計賃金の計算に使用できます。

これらの例は、タイムスタンプ形式 `'M/D/YYYY h:mm:ss[.fff] TT'` を使用しています。タイムスタンプ形式は、データ ロード スクリプト上部の `SET TimeStamp` ステートメントで指定されています。必要に応じて、書式を変更してください。

関数の例

| 例 | 結果 |
| --- | --- |
| `daystart('01/25/2013 4:45:00 PM')` | 1/25/2013 12:00:00 AM を返します。 |
| `daystart('1/25/2013 4:45:00 PM', -1)` | 1/24/2013 12:00:00 AM を返します。 |
| `daystart('1/25/2013 16:45:00',0,0.5<br>)` | 1/25/2013 12:00:00 PM を返します。 |

## リージョンの設定

特に指定のない限り、このトピックの例では 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/daystart.htm)

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

概要

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

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

* `Calendar` という名前のテーブルにロードされる日付のリストを含む単純なデータセット。

* 既定の `TimeStampFormat` システム変数 (`(M/D/YYYY h:mm:ss[.fff] TT`) が使用されます。

* `daystart()` 関数を使用して、`SOD_timestamp` という名前の追加項目を作成する先行する LOAD。

日付を除いて、関数に追加のパラメータは提供されません。

ロード スクリプト

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

Calendar:
    Load
        date,
        daystart(date) as SOD_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`

* `SOD_timestamp`

結果テーブル

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

上のテーブルからわかるように、データセット内の日付ごとに 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/daystart.htm)

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

概要

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

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

* `Fines` という名前のテーブルにロードされる駐車違反料金を含むデータセット。データセットには次の項目が含まれています。

  * `id`

  * `due_date`

  * `number_plate`

  * `amount`

* `daystart()` 関数を使った先行 Load および 3 つのパラメータの供給: `time`、`period_no`、および `day_start`。この先行 Load は、次の 2 つの新しい日付項目を作成します。

  * [`early_repayment_period`] 日付項目、支払期日から 7 日前から開始。

  * [`late_penalty_period`] 日付項目、支払期日から 14 日後から開始。

ロード スクリプト

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

Fines:
    Load
        *,
        daystart(due_date,-7) as early_repayment_period,
        daystart(due_date,14) as late_penalty_period
        ;
Load
*
Inline
[
id, due_date, number_plate,amount
1,02/11/2022, 573RJG,50.00
2,03/25/2022, SC41854,50.00
3,04/14/2022, 8EHZ378,50.00
4,06/28/2022, 8HSS198,50.00
5,08/15/2022, 1221665,50.00
6,11/16/2022, EAK473,50.00
7,01/17/2023, KD6822,50.00
8,03/22/2023, 1GGLB,50.00
];
```

結果

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

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

結果テーブル

| due\_date | early\_repayment\_period | late\_penalty\_period |
| --- | --- | --- |
| 02/11/2022 9:25:14 AM | 2/4/2022 12:00:00 AM | 2/25/2022 12:00:00 AM |
| 03/25/2022 10:06:54 AM | 3/18/2022 12:00:00 AM | 4/8/2022 12:00:00 AM |
| 04/14/2022 10:44:42 AM | 4/7/2022 12:00:00 AM | 4/28/2022 12:00:00 AM |
| 06/28/2022 11:33:30 AM | 6/21/2022 12:00:00 AM | 7/12/2022 12:00:00 AM |
| 08/15/2022 12:58:14 PM | 8/8/2022 12:00:00 AM | 8/29/2022 12:00:00 AM |
| 11/16/2022 4:23:12 PM | 11/9/2022 12:00:00 AM | 11/30/2022 12:00:00 AM |
| 01/17/2023 6:42:15 PM | 1/10/2023 12:00:00 AM | 1/31/2023 12:00:00 AM |
| 03/22/2023 7:41:16 PM | 3/15/2023 12:00:00 AM | 4/5/2023 12:00:00 AM |

新しい項目の値は `TimestampFormat M/DD/YYYY tt` にあります。関数 `daystart()` が使用されたため、タイムスタンプ値はすべてその日の最初のミリ秒です。

`  daystart() ` 関数で渡される 2 番目の引数が負であるため、早期再支払期間の値は期日の 7 日前です。

`daystart()` 関数で渡される 2 番目の引数が負であるため、遅延再支払期間の値は期日の 14 日後です。

## 例 3 – day\_start

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

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

概要

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

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

* 前の例と同じデータセットとシナリオ。

* 前の例と同じ先行 Load 。

この例では、業務日が毎日 7:00 AM に開始/終了するように設定されています。

ロード スクリプト

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

Fines:
    Load
        *,
        daystart(due_date,-7,7/24) as early_repayment_period,	 
        daystart(due_date,14, 7/24) as late_penalty_period
        ;
Load
*
Inline
[
id, due_date, number_plate,amount
1,02/11/2022, 573RJG,50.00
2,03/25/2022, SC41854,50.00
3,04/14/2022, 8EHZ378,50.00
4,06/28/2022, 8HSS198,50.00
5,08/15/2022, 1221665,50.00
6,11/16/2022, EAK473,50.00
7,01/17/2023, KD6822,50.00
8,03/22/2023, 1GGLB,50.00
];
```

結果

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

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

結果テーブル

| due\_date | early\_repayment\_period | late\_penalty\_period |
| --- | --- | --- |
| 02/11/2022 | 2/3/2022 7:00:00 AM | 2/24/2022 7:00:00 AM |
| 03/25/2022 | 3/17/2022 7:00:00 AM | 4/7/2022 7:00:00 AM |
| 04/14/2022 | 4/6/2022 7:00:00 AM | 4/27/2022 7:00:00 AM |
| 06/28/2022 | 6/20/2022 7:00:00 AM | 7/11/2022 7:00:00 AM |
| 08/15/2022 | 8/7/2022 7:00:00 AM | 8/28/2022 7:00:00 AM |
| 11/16/2022 | 11/8/2022 7:00:00 AM | 11/29/2022 7:00:00 AM |
| 01/17/2023 | 1/9/2023 7:00:00 AM | 1/30/2023 7:00:00 AM |
| 03/22/2023 | 3/14/2023 7:00:00 AM | 4/4/2023 7:00:00 AM |

`daystart()` 関数に渡された引数 `day_start` の値が 7/24 であったため、日付のタイムスタンプは 7:00 AMとなります。これにより、日の始めが 7:00 AM に設定されます。

[`due_date`] 項目にタイムスタンプがないため、12:00 AM として処理されますが、これは日付が 7:00 AM で開始/終了するため前の日の一部のままです。そのため、2 月 11 日が期日の違反料金の早期再支払期間は 2 月 3 日の 7:00 AM に始まります。

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

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

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

概要

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

子の例では、前の例と同じデータセットとシナリオを使用しています。

ただし、元の Fines テーブルは、2 つの追加期日値がチャート オブジェクトで計算され、アプリケーションにロードされます。

ロード スクリプト

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

Fines:
    Load
*
Inline 
[
id, due_date, numer_plate,amount
1,02/11/2022 9:25:14 AM, 573RJG,50.00
2,03/25/2022 10:06:54 AM, SC41854,50.00
3,04/14/2022 10:44:42 AM, 8EHZ378,50.00
4,06/28/2022 11:33:30 AM, 8HSS198,50.00
5,08/15/2022 12:58:14 PM, 1221665,50.00
6,11/16/2022 4:23:12 PM, EAK473,50.00
7,01/17/2023 6:42:15 PM, KD6822,50.00
8,03/22/2023 7:41:16 PM, 1GGLB,50.00
];
```

結果

次の手順を実行します。

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

2. [early\_repayment\_period] 項目を作成するには、次のメジャーを作成します。

   =daystart(due\_date,-7,7/24)

3. [late\_penalty\_period] 項目を作成するには、次のメジャーを作成します:

   =daystart(due\_date,14,7/24)

結果テーブル

| due\_date | =daystart(due\_date,-7,7/24) | =daystart(due\_date,14,7/24) |
| --- | --- | --- |
| 02/11/2022 9:25:14 AM | 2/4/2022 7:00:00 AM | 2/25/2022 7:00:00 AM |
| 03/25/2022 10:06:54 AM | 3/18/2022 7:00:00 AM | 4/8/2022 7:00:00 AM |
| 04/14/2022 10:44:42 AM | 4/7/2022 7:00:00 AM | 4/28/2022 7:00:00 AM |
| 06/28/2022 11:33:30 AM | 6/21/2022 7:00:00 AM | 7/12/2022 7:00:00 AM |
| 08/15/2022 12:58:14 PM | 8/8/2022 7:00:00 AM | 8/29/2022 7:00:00 AM |
| 11/16/2022 4:23:12 PM | 11/9/2022 7:00:00 AM | 11/30/2022 7:00:00 AM |
| 01/17/2023 6:42:15 PM | 1/10/2023 7:00:00 AM | 1/31/2023 7:00:00 AM |
| 03/22/2023 7:41:16 PM | 3/15/2023 7:00:00 AM | 4/5/2023 7:00:00 AM |

新しい項目の値は TimestampFormat M/D/YYYY h:mm:ss[.fff] TT にあります。daystart() 関数が使用されたため、日付と時刻の値はすべてその日の最初のミリ秒に対応します。

daystart() 関数で渡される 2 番目の引数が負であるため、早期再支払期間の値は期日の 7 日前です。

daystart() 関数で渡される 2 番目の引数が正であるため、遅延再支払期間の値は期日の 14 日後です。

daystart() 関数に渡された引数 day\_start の値が 7/24 であったため、日付のタイムスタンプは 7:00 AMとなります。