# 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-CN/cloud-services/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/cloud-services/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/cloud-services/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` 值。