# quarterstart 指令碼與圖表函數

此函數傳回的值相當於包含 date 的季度的第一毫秒的時間戳記。預設的輸出格式為指令碼中所設定的 DateFormat。

語法：

QuarterStart(date[, period\_no[, first\_month\_of\_year]])

傳回的資料類型： 雙值

`quarterstart()` 函數的圖表

`quarterstart()` 函數的圖表

`quarterstart()`quarterstart() 函數的圖表 ![範例圖表顯示 quarterstart 函數如何將輸入日期轉換為日期所在該季第一個月的第一毫秒的時間戳記。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-quarterstart-general.png)

`quarterstart()` 函數判定 `date` 落在哪一季。然後以日期格式傳回該季第一個月的第一毫秒的時間戳記。

引數

| 引數 | 描述 |
| --- | --- |
| date | 要評估的時間戳記。 |
| period\_no | period\_no 為整數，值 0 表示是包含 date 的季度。負值的 period\_no 表示之前的季度，正值表示之後的季度。 |
| first\_month\_of\_year | 如果要使用不起始於 1 月的 (會計) 年度，可在 first\_month\_of\_year 中指定介於 2 和 12 之間的值。 |

## 什麼情況下使用

`quarterstart()` 函數通常在使用者想要計算使用一季中已經過的部分時，作為運算式的一部分使用。例如，這可讓使用者用於計算季初至今已累積的利息。

函數範例

| 範例 | 結果 |
| --- | --- |
| `quarterstart('10/29/2005')` | 傳回 10/01/2005。 |
| `quarterstart('10/29/2005', -1 )` | 傳回 07/01/2005。 |
| `quarterstart('10/29/2005', 0, 3)` | 傳回 09/01/2005。 |

## 區域設定

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

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

## 範例 1 – 無其他引數

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

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

概述

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

載入指令碼包含：

* 包含一組 2022 年交易的資料集，這載入到稱為 `Transactions` 的表格中。

* 以 `DateFormat` 系統變數 (MM/DD/YYYY) 格式提供的日期欄位。

* 建立欄位 `start_of_quarter`，這傳回交易發生該季開始的時間戳記。

載入指令碼

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

Transactions:
    Load
        *,
        quarterstart(date) as start_of_quarter,
        timestamp(quarterstart(date)) as start_of_quarter_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `date`

* `start_of_quarter`

* `start_of_quarter_timestamp`

結果表格

| 日期 | start\_of\_quarter | start\_of\_quarter\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/28/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 3/16/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 4/1/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 5/7/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 5/16/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 6/15/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 6/26/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
| 7/22/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
| 7/23/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
| 8/2/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
| 8/8/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
| 8/19/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
| 9/26/2022 | 07/01/2022 | 7/1/2021 12:00:00 AM |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |

`start_of_quarter` 欄位在前置 LOAD 陳述式中的建立方式是使用 `quarterstart()` 函數並傳遞日期欄位，作為函數的引數。`uarterstart()` 函數最初識別日期值落在哪一季。然後傳回該季第一毫秒的時間戳記。

`quarterstart()` 函數的圖表，無其他引數的範例

`quarterstart()` 函數的圖表，無其他引數的範例

`quarterstart()`quarterstart() 函數的圖表，無其他引數的範例 ![圖表顯示 quarterstart 函數如何將每個交易的輸入日期轉換為日期所在該季第一個月的第一毫秒的時間戳記。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-quarterstart-examples-no-add-arg.png)

交易 8203 發生於 8 月 8 日。`quarterstart()` 函數識別該交易發生在第三季，並傳回該季的第一毫秒，即 7 月 1 日 12:00:00 AM。

## 範例 2 – period\_no

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

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

概述

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

載入指令碼包含：

* 與第一個範例相同的資料集和情境。

* 建立欄位 `previous_quarter_start`，，這傳回交易發生之前每季開始的時間戳記。

載入指令碼

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

Transactions:
    Load
        *,
        quarterstart(date,-1) as previous_quarter_start,
        timestamp(quarterstart(date,-1)) as previous_quarter_start_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `date`

* `previous_quarter_start`

* `previous_quarter_start_timestamp`

結果表格

| 日期 | previous\_quarter\_start | previous\_quarter\_start\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
| 1/19/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
| 2/5/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
| 2/28/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
| 3/16/2022 | 10/01/2021 | 10/1/2021 12:00:00 AM |
| 4/1/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 5/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 5/16/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 6/15/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 6/26/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 7/9/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 7/22/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 7/23/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 7/27/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 8/2/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 8/8/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 8/19/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 9/26/2022 | 04/01/2022 | 4/1/2021 12:00:00 AM |
| 10/14/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 10/29/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |

在此例中，因為 `period_no` 的值 -1 已作為 `quarterstart()` 函數中的偏移引數使用，所以該函數首先會識別交易發生的季度。然後這會往前偏移一季並識別該季的第一毫秒。

`quarterstart()` 函數的圖表，period\_no 範例

`quarterstart()` 函數的圖表，period\_no 範例

`quarterstart()`quarterstart() 函數的圖表，period\_no 範例 ![圖表顯示 quarterstart 函數如何將每個交易的輸入日期轉換為日期所在該季第一個月的第一毫秒的時間戳記。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-quarterstart-examples-period-no.png)

交易 8203 發生於 8 月 8 日。`quarterstart()` 函數識別交易發生的前一季介於 4 月 1 日和 6 月 30 日之間。然後這會傳回該季的第一毫秒 4 月 1 日 12:00:00 AM。

## 範例 3 – first\_month\_of\_year

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

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

概述

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

載入指令碼包含與第一個範例相同的資料集和情境。不過，在此範例中，我們需要將 3 月 1 日設定為會計年度的開始。

載入指令碼

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

Transactions:
    Load
        *,
        quarterstart(date,0,3) as start_of_quarter,
        timestamp(quarterstart(date,0,3)) as start_of_quarter_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `date`

* `start_of_quarter`

* `start_of_quarter_timestamp`

結果表格

| 日期 | start\_of\_quarter | start\_of\_quarter\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 1/19/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 2/5/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 2/28/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 4/1/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 5/7/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 5/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 6/26/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/9/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/22/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/23/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/27/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 8/2/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 8/8/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 8/19/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 10/14/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 10/29/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |

因為 `  first_month_of_year ` 引數 3 用於 `quarterstart()` 函數，該年的開始會從 1 月 1 日移至 3 月 1 日。

`quarterstart()` 函數的圖表，first\_month\_of\_year 範例

`quarterstart()` 函數的圖表，first\_month\_of\_year 範例

`quarterstart()`quarterstart() 函數的圖表，first\_month\_of\_year 範例 ![圖表顯示 quarterstart 函數如何將每個交易的輸入日期轉換為日期所在該季第一個月的第一毫秒的時間戳記。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-quarterstart-examples-first-mth-yr.png)

交易 8203 發生於 8 月 8 日。因為該年的開始是 3 月 1 日，該年的各季發生在 3 月 - 5 月、6 月 - 8 月、9 月 - 11 月 和 12 月 - 2 月之間。`quarterstart()` 函數識別該交易發生 6 月開始和 8 月之間的季，並傳回該季的第一毫秒，即 6 月 1 日 12:00:00 AM。

## 範例 4 – 圖表物件範例

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

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

概述

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

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

不過，在此範例中，不變的資料集會載入到應用程式中。會建立傳回交易發生該季結束時間戳記的計算，作為應用程式圖表物件中的量值。

載入指令碼

```
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
8190,2/28/2022,88.27
8191,2/5/2022,57.42
8192,3/16/2022,53.80
8193,4/1/2022,82.06
8194,5/7/2022,40.39
8195,5/16/2022,87.21
8196,6/15/2022,95.93
8197,6/26/2022,45.89
8198,7/9/2022,36.23
8199,7/22/2022,25.66
8200,7/23/2022,82.77
8201,7/27/2022,69.98
8202,8/2/2022,76.11
8203,8/8/2022,25.12
8204,8/19/2022,46.23
8205,9/26/2022,84.21
8206,10/14/2022,96.24
8207,10/29/2022,67.67
];
```

結果

載入資料並開啟工作表。建立新的表格並將此欄位新增為維度： date。

新增下列量值：

* =quarterstart(date)

* =timestamp(quarterstart(date))

結果表格

| 日期 | =quarterstart(date) | =timestamp(quarterstart(date)) |
| --- | --- | --- |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/2/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/8/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/19/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 9/26/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 5/7/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 5/16/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 6/15/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 6/26/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/28/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 3/16/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |

start\_of\_quarter 量值在圖表物件中的建立方式是使用 quarterstart() 函數並傳遞 date 欄位，作為函數的引數。

quarterstart() 函數識別日期值落在哪一季，並傳回該季第一毫秒的時間戳記。

quarterstart() 函數的圖表，圖表物件範例

quarterstart() 函數的圖表，圖表物件範例

quarterstart()quarterstart() 函數的圖表，圖表物件範例 ![圖表顯示 quarterstart 函數如何將每個交易的輸入日期轉換為日期所在該季第一個月的第一毫秒的時間戳記。](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-quarterstart-examples-chart-object.png)

交易 8203 發生於 8 月 8 日。quarterstart() 函數識別該交易發生在第三季，並傳回該季的第一毫秒。傳回的值是 7 月 1 日 12:00:00 AM。

## 範例 5 – 情境

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

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

概述

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

載入指令碼包含：

* 資料集包含一系列貸款餘額，其位於稱為 Loans 的表格。

* 資料包含貸款 ID、季開始餘額以及每年對每項貸款收取的單利率。

最終使用者希望圖表物件按貸款 ID 顯示季初至今每筆貸款已累積的目前利息。

載入指令碼

```
Loans:
Load
*
Inline
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
```

結果

請執行下列動作：

1. 載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

   * loan\_id

   * start\_balance

2. 接下來，建立此量值以計算累積的利息：

   =start\_balance\*(rate\*(today(1)-quarterstart(today(1)))/365)

3. 將量值的數字格式設定為金錢。

結果表格

| loan\_id | start\_balance | =start\_balance\*(rate\*(today(1)-quarterstart(today(1)))/365) |
| --- | --- | --- |
| 8188 | $10000.00 | $15.07 |
| 8189 | $15000.00 | $128.84 |
| 8190 | $17500.00 | $63.29 |
| 8191 | $21000.00 | $107.59 |
| 8192 | $90000.00 | $1139.18 |

quarterstart() 函數使用今日日期作為其唯一引數，傳回目前年份的開始日期。以目前日期減去該結果後，運算式會傳回此季目前已經過的天數。

然後此值乘以利率並除以 365，以傳回此期間產生的有效利率。然後該結果乘以貸款的開始餘額，以傳回此季目前已累積的利息。