# weekday 指令碼與圖表函數

此函數會傳回函下列項目的雙值：

* 如環境變數 DayNames 中所定義的日名稱。
* 介於 0 至 6 之間且對應於一週中正常日 (0-6) 的整數。

語法：

weekday(date [,first\_week\_day=0])

傳回的資料類型： 雙值

`weekday()` 函數判定日期落在哪個星期幾。然後傳回代表該日子的字串值。

`weekday()` 函數的圖表，其傳回日期所在的日子名稱

`weekday()` 函數的圖表，其傳回日期所在的日子名稱

`weekday()`weekday() 函數的圖表，其傳回日期所在的日子名稱 ![顯示 weekday() 函數傳回日期所在日子名稱的圖表。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekday-diagram1.png)

根據一週的開始日期，結果會傳回與星期幾對應的數字值 (0-6)。例如，如果每週第一天設為星期日，星期三即會傳回 `3` 的數字值。此開始日期由 `FirstWeekDay` 系統變數，或是 `first_week_day` 函數參數判定。

您可以使用此數值作為算術運算式的一部分。例如，乘以 `1` 可傳回值本身。

`weekday()` 函數的圖表，且具有顯示日子的數字值，而不是日子名稱

`weekday()` 函數的圖表，且具有顯示日子的數字值，而不是日子名稱

`weekday()`weekday() 函數的圖表，且具有顯示日子的數字值，而不是日子名稱 ![顯示 weekday() 函數的圖表可傳回與識別日子對應的數字值。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekday-diagram2.png)

何時使用 weekday

若您想要按星期幾比較會總，則 `weekday()` 函數很實用。例如，若您想按工作日比較產品平均銷售額。

這些維度在載入指令碼建立時可使用函數建立主要行事曆表格的欄位；或是直接在圖表中建立為計算量值。

相關主題

| 主題 | 互動 |
| --- | --- |
| [FirstWeekDay](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm) | 定義每週開始的日子。 |

| <ul> </ul> |
| --- |

引數

| 引數 | 描述 |
| --- | --- |
| date | 要評估的時間戳記。 |
| first\_week\_day | 指定一週開始的日子。如果忽略，將使用變數 FirstWeekDay 的值。<br><br>[FirstWeekDay](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm) |

您可以在 `first_week_day` 引數中使用下列值設定一週開始的日期：

first\_week\_day 值

| 日 | 值 |
| --- | --- |
| 星期一 | 0 |
| 星期二 | 1 |
| 星期三 | 2 |
| 星期四 | 3 |
| 星期五 | 4 |
| 星期六 | 5 |
| 星期日 | 6 |

## 區域設定

除非另有說明，否則此主題中的範例皆使用下列日期格式：MM/DD/YYYY。日期格式是在資料載入指令碼的 `SET DateFormat` 陳述式中指定。由於地區設定和其他因素，您系統中的預設日期格式可能會不同。您可以變更以下範例中的格式，以滿足您的需求。或者，您可以在載入指令碼中變更格式，以符合這些範例。如需詳細資訊，請參閱 [修改用於應用程式和指令碼的區域設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)。

應用程式中的預設地區設定是根據使用者設定檔。這些地區格式設定與 Qlik Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。

若您是應用程式建立者，可以為您建立的應用程式設定預設地區。如需詳細資訊，請參閱[Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)。

資訊備註除非另有說明，否則在這些範例中 `FirstWeekDay` 會設為 `0`。

函數範例

| 範例 | 結果 |
| --- | --- |
| `weekday('10/12/1971')` | 傳回 'Tue' 和 1。 |
| `weekday('10/12/1971' , 6)` | 傳回 'Tue' 和 2。<br><br>在此範例中，星期日 (`6`) 是一週的第一天。 |
| `SET FirstWeekDay=6;`<br><br>`...`<br><br>`weekday('10/12/1971')` | 傳回 'Tue' 和 2。 |

## 範例 1 - 工作日字串

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

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

概述

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

載入指令碼包含：

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

* 設定為 6 (星期日) 的 `FirstWeekDay` 系統變數。

* 設為使用預設日期名稱的 `DayNames` 變數。

* 包含 `weekday()` 函數的前置載入，且設為「`week_day`」欄位並傳回交易發生的工作日。

載入指令碼

```
SET DateFormat='MM/DD/YYYY'; 
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; 
SET FirstWeekDay=6; 
 
Transactions: 
    Load 
       *, 
       WeekDay(date) as week_day 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,01/01/2022,37.23 
8189,01/02/2022,17.17 
8190,01/03/2022,88.27 
8191,01/04/2022,57.42 
8192,01/05/2022,53.80 
8193,01/06/2022,82.06 
8194,01/07/2022,40.39 
]; 
```

結果

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

* `id`
* `date`
* `week_day`

結果表格

| id | 日期 | week\_day |
| --- | --- | --- |
| 8188 | 01/01/2022 | 星期六 |
| 8189 | 01/02/2022 | 星期日 |
| 8190 | 01/03/2022 | 星期一 |
| 8191 | 01/04/2022 | 星期二 |
| 8192 | 01/05/2022 | 星期三 |
| 8193 | 01/06/2022 | 星期四 |
| 8194 | 01/07/2022 | 星期五 |

「`week_day`」欄位在前置 LOAD 陳述式中的建立方式是使用 `weekday()` 函數並傳遞日期欄位，作為函數的引數。

`weekday()` 函數傳回工作日字串值；亦即傳回由 `DayNames` 系統變數設定的工作日名稱。

`weekday()` 函數的圖表，並為交易 8192 工作日傳回星期三

`weekday()` 函數的圖表，並為交易 8192 工作日傳回星期三

`weekday()`weekday() 函數的圖表，並為交易 8192 工作日傳回星期三 ![顯示 weekday() 函數為交易 8192 工作日傳回星期三的圖表](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekday-examples1_and3-diagram.png)

交易 8192 發生在 1 月 5 日。`FirstWeekDay` 系統變數會將每週第一天設為星期日。`weekday()` 函數交易發生在星期三並傳回此值，且為 `DayNames` 系統變數的縮寫形式並位於 `week_day` 欄位。

「`week_day`」欄位中的值在資料行中向右對齊，因為欄位有雙值數字和文字結果 (星期三、3)。若要將欄位值轉換為等同數字的值，欄位即可在 `num()` 函數內換行。例如在交易 8192 中，星期三值會轉換為數字 3。

## 範例 2 – first\_week\_day

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

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

概述

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

載入指令碼包含：

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

* 設定為 6 (星期日) 的 `FirstWeekDay` 系統變數。

* 設為使用預設日期名稱的 `DayNames` 變數。

* 包含 `weekday()` 函數的先前載入，且設為「`week_day`」欄位並傳回交易發生的工作日。

載入指令碼

```
SET DateFormat='MM/DD/YYYY'; 
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; 
SET FirstWeekDay=6; 
 
Transactions: 
    Load 
       *, 
       WeekDay(date,1) as week_day 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,01/01/2022,37.23 
8189,01/02/2022,17.17 
8190,01/03/2022,88.27 
8191,01/04/2022,57.42 
8192,01/05/2022,53.80 
8193,01/06/2022,82.06 
8194,01/07/2022,40.39 
]; 
```

結果

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

* `id`
* `date`
* `week_day`

結果表格

| id | 日期 | week\_day |
| --- | --- | --- |
| 8188 | 01/01/2022 | 星期六 |
| 8189 | 01/02/2022 | 星期日 |
| 8190 | 01/03/2022 | 星期一 |
| 8191 | 01/04/2022 | 星期二 |
| 8192 | 01/05/2022 | 星期三 |
| 8193 | 01/06/2022 | 星期四 |
| 8194 | 01/07/2022 | 星期五 |

`weekday()` 函數的圖表，顯示星期三有 1 的雙值數字值

`weekday()` 函數的圖表，顯示星期三有 1 的雙值數字值

`weekday()`weekday() 函數的圖表，顯示星期三有 1 的雙值數字值 ![圖表顯示 2022 年 1 月 5 日落在星期三且星期三為 1 的數字值，因為每週第一天設為星期二。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekday-example2-diagram.png)

因為 `first_week_day` 引數在 `weekday()` 函數中設為 `1`，所以每週第一天是星期二。因此，所有發生在星期二的交易會有 `0` 的雙值數字值。

交易 8192 發生在 1 月 5 日。`weekday()` 函數識別這是星期三，所以運算式會傳回 `1` 的雙值數字值。

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

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

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

概述

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

載入指令碼包含：

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

* 設為 `6` (星期日) 的 `FirstWeekDay` 系統變數。

* 設為使用預設日期名稱的 `DayNames` 變數。

不過，在此範例中，資料集保持不變並且會載入到應用程式中。識別工作日值的計算在應用程式圖表中建立為量值。

載入指令碼

```
SET DateFormat='MM/DD/YYYY'; 
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; 
SET FirstWeekDay=6; 
 
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,01/01/2022,37.23 
8189,01/02/2022,17.17 
8190,01/03/2022,88.27 
8191,01/04/2022,57.42 
8192,01/05/2022,53.80 
8193,01/06/2022,82.06 
8194,01/07/2022,40.39 
]; 
```

結果

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

* `id`
* `date`

若要計算工作日值，請建立下列量值：

* `=weekday(date)`

結果表格

| id | 日期 | =weekday(date) |
| --- | --- | --- |
| 8188 | 01/01/2022 | 星期六 |
| 8189 | 01/02/2022 | 星期日 |
| 8190 | 01/03/2022 | 星期一 |
| 8191 | 01/04/2022 | 星期二 |
| 8192 | 01/05/2022 | 星期三 |
| 8193 | 01/06/2022 | 星期四 |
| 8194 | 01/07/2022 | 星期五 |

「`=weekday(date)`」欄位在圖表中的建立方式是使用 `weekday()` 函數並傳遞日期欄位，作為函數的引數。

`weekday()` 函數傳回工作日字串值；亦即傳回由 `DayNames` 系統變數設定的工作日名稱。

`weekday()` 函數的圖表，並為交易 8192 工作日傳回星期三

`weekday()` 函數的圖表，並為交易 8192 工作日傳回星期三

`weekday()`weekday() 函數的圖表，並為交易 8192 工作日傳回星期三 ![顯示 weekday() 函數為交易 8192 工作日傳回星期三的圖表](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-weekday-examples1_and3-diagram.png)

交易 8192 發生在 1 月 5 日。`FirstWeekDay` 系統變數會將每週第一天設為星期日。`weekday()` 函數交易發生在星期三並傳回此值，且為 `DayNames` 系統變數的縮寫形式並位於 `=weekday(date)` 欄位。

## 範例 4 – 情境

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

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

概述

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

載入指令碼包含：

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

* 設為 `6` (星期日) 的 `FirstWeekDay` 系統變數。

* 設為使用預設日期名稱的 `DayNames` 變數。

最終使用者希望圖表按工作日呈現交易的平均銷售額。

載入指令碼

```
SET DateFormat='MM/DD/YYYY'; 
SET DayNames='Mon;Tue;Wed;Thu;Fri;Sat;Sun'; 
SET FirstWeekDay=6; 
 
Transactions: 
LOAD 
  RecNo() AS id, 
  MakeDate(2022, 1, Ceil(Rand() * 31)) as date, 
  Rand() * 1000 AS amount 
						
Autogenerate(1000); 
```

結果

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

* `=weekday(date)`
* `=avg(amount)`

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

結果表格

| =weekday(date) | Avg(amount) |
| --- | --- |
| 星期日 | $536.96 |
| 星期一 | $500.80 |
| 星期二 | $515.63 |
| 星期三 | $509.21 |
| 星期四 | $482.70 |
| 星期五 | $441.33 |
| 星期六 | $505.22 |