# dayend 指令碼與圖表函數

此函數傳回的值相當於包含在 time 中該日的最後一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 TimestampFormat。

語法：

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

什麼情況下使用

`  dayend() ` 函數通常在使用者想要計算以使用一天中尚未發生的部分時，作為運算式的一部分使用。例如，用來計算一天當中仍待產生的整體費用。

傳回的資料類型： 雙值

引數

| 引數 | 描述 |
| --- | --- |
| time | 要評估的時間戳記。 |
| period\_no | period\_no 是一個整數，或者解析為整數的運算式，其中值 0 表示包含 time 的日。負值的 period\_no 表示之前的日，正值表示之後的日。 |
| day\_start | 若要指定日不從午夜開始，可在 day\_start 中指示位移 (以一日的片段表示)。例如，0.125 表示上午 3:00。<br><br>換言之，若要建立偏移，請依 24 小時分割開始時間。例如，對於在上午 7:00 開始的日子，請使用分數 7/24。 |

## 區域設定

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

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

函數範例

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

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

概述

開啟 資料載入編輯器 並將下面的載入指令碼新增至新的索引標籤。

載入指令碼包含：

* 包含日期清單的資料集載入到名為「Calendar」的表格中。

* 預設 `DateFormat` 系統變數 `(MM/DD/YYYY)`。

* 使用 `dayend()` 函數建立附加欄位 '`EOD_timestamp`' 的前置載入。

載入指令碼

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

結果表格

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

如同您在以上表格中所見，會為資料集中的每個日期產生日子結束時間戳記。時間戳記的格式是系統變數 `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`。

## 範例 2 – period\_no

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

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

概述

開啟 資料載入編輯器 並將下面的載入指令碼新增至新的索引標籤。

您會將包含服務預約的資料集載入到名稱為 'Services' 的表格。

資料集包括下列欄位：

* ` service_id
                                       `

* ` service_date
                                       `

* `amount`

您將會在表格中建立兩個新欄位：

* `deposit_due_date`：應收到存款的日期。這是 `service_date` 三天之前的日子結束時間。

* `final_payment_due_date`：應收到最終付款的日期。這是 `service_date` 七天之後的日子結束時間。

以上兩個欄位在前置載入中使用 `dayend()` 函數建立，並提供前兩個參數 `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()` 函數中傳遞的第二引數為負值，存款到期日期值是服務日期的三天前。

由於 `dayend()` 函數中傳遞的第二引數為正值，最終付款到期日期值是服務日期的七天後。

## 範例 3 – day\_start 指令碼

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

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

概述

開啟 資料載入編輯器 並在新的索引標籤中新增下面的載入指令碼。

此範例中使用的資料集和情境與上一個範例相同。

如同上一個範例，您將會建立兩個新的欄位：

* `deposit_due_date`：應收到存款的日期。這是 `service_date` 三天之前的日子結束時間。

* `final_payment_due_date`：應收到最終付款的日期。這是 `service_date` 七天之後的日子結束時間。

不過，貴公司希望根據工作日在下午 5 時開始並在次日下午 5 時結束的政策來運作。然後貴公司可以監控在這些工作時間中發生的交易。

為了達到這些要求，以上兩個欄位在前置載入中使用 `dayend()` 函數建立，並使用全部三個引數 `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 保持相同，日期現在有下午 5:00 之前最後一毫秒的時間戳記，因為傳遞至 `dayend()` 函數的第三引數 `day_start` 值為 17/24。

## 範例 4 – 圖表範例

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

#### 載入指令碼和圖表運算式

概述

開啟 資料載入編輯器 並將下面的載入指令碼新增至新的索引標籤。

此範例中使用的資料集和情境與前兩個範例相同。公司希望根據工作日在下午 5:00 開始並在次日下午 5:00 結束的政策來運作。

如同上一個範例，您將會建立兩個新的欄位：

* deposit\_due\_date：應收到存款的日期。這是 service\_date 三天之前的日子結束時間。

* final\_payment\_due\_date：應收到最終付款的日期。這是 service\_date 七天之後的日子結束時間。

載入指令碼

```
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() 函數中傳遞的第二引數為負值，付款到期日期值是服務日期的三天前。

由於 dayend() 函數中傳遞的第二引數為正值，最終付款到期日期值是服務日期的七天後。

日期有下午 5:00 之前最後一毫秒的時間戳記，因為傳遞至 dayend() 函數的第三引數 day\_start 值為 17/24。

## 瞭解更多資訊

* [從先前載入的表格載入資料](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm)

引數

| 引數 | 描述 |
| --- | --- |
| time | 要評估的時間戳記。 |
| period\_no | period\_no 是一個整數，或者解析為整數的運算式，其中值 0 表示包含 time 的日。負值的 period\_no 表示之前的日，正值表示之後的日。 |
| day\_start | 若要指定日不從午夜開始，可在 day\_start 中指示位移 (以一日的片段表示)。例如，0.125 表示上午 3:00。 |