# inday - 指令碼與圖表函數

此函數會傳回 True，前提是如果 timestamp 位於包含 base\_timestamp 的日中。

語法：

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

`inday` 函數的圖表

`inday` 函數的圖表

`inday`inday 函數的圖表 ![圖表顯示如何使用 inday 函數來識別時間區段並根據該區段傳回布林值結果。](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inday-diagram.png)

`inday()` 函數使用 `base_timestamp` 引數來識別時間戳記落在哪一天。依照預設，一天的開始時間為午夜；但您可以使用 `inday()` 函數的 `day_start` 引數變更一天的開始時間。定義此日後，該函數將會在比較規定的時間戳記值與該日時傳回布林值結果。

什麼情況下使用

`inday()` 函數會傳回布林值結果。通常，此函數類型將作為 `if expression` 中的條件使用。這根據評估的日期是否發生於問題中的時間戳記當日，傳回彙總或計算。

例如，`inday()` 函數可用來識別指定日製作的所有設備。

傳回的資料類型： 布林值

在 Qlik Sense 中，布林值 true 值以 -1 代表，而 false 值以 0 代表。

引數

| 引數 | 描述 |
| --- | --- |
| `timestamp` | 您想要與 `base_timestamp` 比較的日期和時間。 |
| `base_timestamp` | 用來評估時間戳記的日期和時間。 |
| `period_no` | 日可以使用 `period_no` 位移。`period_no` 是一個整數，其中值 0 表示包含 `base_timestamp` 的日。負值的 `period_no` 表示之前的日，正值表示之後的日。 |
| `day_start` | 如果要使用不起始於午夜的日，則可在 `day_start` 中指示位移 (以一日的小數表示)，例如 0.125 代表早上 3 時。 |

## 區域設定

除非另有說明，否則此主題中的範例皆使用下列日期格式：MM/DD/YYYY。日期格式是在資料載入指令碼的 `SET DateFormat` 陳述式中指定。由於地區設定和其他因素，您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式，以滿足您的需求。或者，您可以在載入指令碼中變更格式，以符合這些範例。

應用程式中的預設地區設定是根據安裝 Qlik Sense 之電腦或伺服器的地區系統設定。若您存取的 Qlik Sense 伺服器設定為瑞典，資料載入編輯器將會對日期、時間和貨幣使用瑞典文地區設定。這些地區格式設定與 Qlik Sense 使用者介面中顯示的語言無關。Qlik Sense 顯示的語言將與您正在使用的瀏覽器相同。

函數範例

| 範例 | 結果 |
| --- | --- |
| `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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inday.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 包含依時間戳記之交易的資料集，這載入到稱為 `Transactions` 的表格中。

* 以 `TimeStamp` 系統變數 `(M/D/YYYY h:mm:ss[.fff] TT)` 格式提供的日期欄位。

* 包含設定為 `in_day` 欄位之 `inday()` 函數的前置載入。

載入指令碼

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

結果表格

| 日期 | 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 |

`in_day` 欄位在前置 LOAD 陳述式中的建立方式是使用 `inday()` 函數並傳遞日期欄位，即 1 月 5 日的硬式編碼時間戳記和值為 `0` 的 `period_no` 作為函數的引數。

## 範例 2 – period\_no

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

#### 載入指令碼和結果

概述

載入指令碼使用與第一個範例中相同的資料集和情境。

不過，在此範例中，任務要計算交易日期是否發生在 1 月 5 日之前的兩天。

載入指令碼

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

結果表格

| 日期 | 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 |

在此實例中，因為值為 `-2` 的 `period_no` 作為 `inday()` 函數中的偏移引數使用，所以函數會決定每個交易日期是否發生在 1 月 3 日。這可以在輸出表格中驗證，其中有一筆交易傳回布林值結果 TRUE。

## 範例 3 – day\_start

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

#### 載入指令碼和結果

概述

載入指令碼使用與先前範例中相同的資料集和情境。

不過，在此範例中，公司政策是工作日在上午 7 時開始和結束。

載入指令碼

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

結果表格

| 日期 | 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 |

因為 `inday()` 函數中使用的 `start_day` 引數為 7/24，亦即上午 7 時，所以該函數會決定每個交易日期是否發生在 1 月 4 日上午 7 時和 1 月 5 日上午 7 時之間。

這可以在輸出表格中驗證，其中發生在 1 月 4 日上午 7 時之後的交易傳回布林值結果 TRUE，而發生在 1 月 5 日上午 7 時之後的交易則傳回布林值結果 。

## 範例 4 – 圖表物件

[](https://help.qlik.com/en-US/sense/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)`

結果表格

| 日期 | 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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inday.htm)

#### 載入指令碼和結果

概述

在此範例中，這識別出由於設備錯誤，在 1 月 5 日製造的產品有瑕疵。最終使用者希望圖表物件依日期顯示哪些製造產品的狀態為「瑕疵」或「故障」，以及在 1 月 5 日製造的產品成本。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 載入資料集並稱為「Products」的表格。

* 該表格含有下列欄位：

  * 產品 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)),'有缺陷的','無缺陷的') | =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 值的任何產品 (因此這不是在該日製造)，會將產品標記為「無缺失」。