# Date#指令碼與圖表函數

Date# 會使用第二個引數中提供的格式 (如果提供的話)，將運算式評估為日期。

語法：

Date#(text[, format])

傳回的資料類型： 雙值

引數

| 引數 | 描述 |
| --- | --- |
| text | 要評估的文字字串。 |
| format | 描述用於解譯文字字串之格式的字串。如果忽略，將會使用資料載入指令碼的系統變數或作業系統中設定的日期格式。<br><br>`Date#` 函數支援多種不同日期結構的格式選項，例如：<br><br>​`DD/MM/YYYY`: ​日/月/年 (例如 15/02/2022)<br><br>​`MM-DD-YYYY`：含連字號的月-日-年 (例如 02-15-2022)<br><br>​`YYYY-MM-DD`：年-月-日，ISO 格式 (例如 2022-02-15)<br><br>​`D-MMM-YYYY`：日期、月份簡稱、年份，含連字號 (例如 15-Feb-2022)<br><br>`​MMMM YYYY`：月份全名和年份 (例如 February 2022)<br><br>​`MM/YYYY`：月份和年份 (例如 02/2022)<br><br>`DD MMMM YYYY`：日期、月份全名和年份 (例如 15 February 2022)<br><br>[數字格式與時間格式的描述](https://help.qlik.com/zh-TW/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Introduction/conventions-number-time-formats.htm) |

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| ` Date#('8/7/97')  ` | 若 `DateFormat` 設定為 `M/D/YY.`，則傳回 `8/7/97` 的有效日期 |
| `Date#('21.10.2023', 'DD.MM.YYYY' )` | 若日期設定為 `DD.MM.YYYY`，則傳回 `21.10.2023` 的有效日期。 |
| `Date#('21.10.2023')` | 若 `DateFormat` 設定為 `M/D/YY`，會傳回 `NULL`。 |

## 範例 - Date# 基礎事項

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

#### 載入指令碼

概述

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

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `StringDate`

* `DateFormat` 變數，使用 `M/D/YY` 格式。

* 前置載入會建立名為 `Date` 的新欄位。`Date#` 和 `Num` 函數用於將字串轉換為日期，然後作為數字傳回該值。

載入指令碼

```
SET DateFormat='M/D/YY';
Example:
Load *,
Num(Date#(StringDate, 'D/M/YYYY')) as Date
;
LOAD * INLINE [
StringDate
13/12/2024
31/1/23
];
```

結果

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

* ` StringDate
                                       `

* `Date`

建立下列量值：

* `=Date(Date)`，用來檢視值，作為使用載入指令碼中的日期格式變數來格式化的日期。

* `=IsNum(StringDate)`，用來驗證該值是字串而不是作為日期進行評估，因為欄位值的日期格式與系統設定不符。

Results table

| StringDate | Date | Date(Date) | IsNum(StringDate) |
| --- | --- | --- | --- |
| 13/12/2024 | 45639 | 12/13/24 | 0 |
| 31/1/23 | 44957 | 1/31/23 | 0 |

結果顯示，前置載入建立的第 2 欄中的 `Date` 欄位已將 `StringDate` 值轉換為以數字表示的日期。第 3 欄中的 `Date` 格式函數將 `Date` 值辨識為日期，並根據載入指令碼中的 `DateFormat` 變數進行格式化。

## 範例 - Date# 使用情境

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

#### 載入指令碼

概述

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

載入指令碼包含：

* 載入到稱為 `Example` 之資料表格的資料集。

* 資料表格中的欄位如下：

  * `Customer`
  * `BirthDate`

* 前置載入會建立名為 `ParsedBirthDate` 的新欄位。

載入指令碼

```
Example:
Load *,
Date#(BirthDate, 'MM.DD.YYYY') as ParsedBirthDate;
Load * inline [
Customer, BirthDate
Customer A, 08.25.2022
Customer B, 08.25.2022
Customer C, 08.25.2022
];
```

結果

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

* ` Customer
                                       `

* `BirthDate`

* `ParsedBirthDate`

建立下列量值：

* `=Date(ParsedBirthDate,'DD/MM/YYYY')`，用來作為格式化日期檢視值。

Results table

| Customer | BirthDate | ParsedBirthDate | Date(ParsedBirthDate, 'DD/MM/YYYY') |
| --- | --- | --- | --- |
| Customer A | 08.25.2022 | 08.25.2022 | 25/08/2022 |
| Customer B | 06.29.2022 | 06.29.2022 | 29/06/2022 |
| Customer C | 05.31.2022 | 05.31.2022 | 31/05/2022 |

在此範例中，我們可以看到在第 2 欄，系統將 `BirthDate` 欄位視為文字。前置載入中使用的 `Date#` 函數將 `BirthDate` 轉換為第 3 欄 `ParsedBirthDate` 中可辨識的日期。然後，第 4 欄中的 `Date` 格式函數能以格式 `DD/MM/YYYY` 顯示 `ParsedBirthDate` 值。