# Date 脚本和图表功能

Date() 用于使用数据加载脚本的系统变量、操作系统或格式字符串（如果提供）中设置的格式，将表达式的格式设置为日期格式。

语法：

Date(number[, format])

返回数据类型： 双

参数

| 参数 | 描述 |
| --- | --- |
| number | 可以设置数字的格式。 |
| 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） |

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `Date( 35648 )` | 当 `DateFormat` 设置为 `YY-MM-DD` 时，返回 `97-08-06`。 |
| `Date( 35648, 'YY.MM.DD' )` | 当 `DateFormat` 设置为 `YY-MM-DD` 时，返回 `97.08.06`。 |
| `Date( '8/6/97', 'YY.MM.DD' )` | 当 `DateFormat` 设置为 `YY-MM-DD` 时，返回 `NULL`。 |

## 示例 - 日期基本原理

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

#### 图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `RowNo`
  * `InputDate`

* `DateFormat` 变量，其使用 `YY-MM-DD` 格式。

加载脚本

```
SET DateFormat='YY-MM-DD';
Example:
Load * inline [
RowNo, InputDate
1, 35648
2, 35648.375
3, 8/6/97
];
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* ` RowNo
                                       `

* `InputDate`

创建以下度量：

* `=Date(InputDate)`，将数值视为使用 `DateFormat` 变量设置格式化的日期。

* `=Date(InputDate, 'DD.MM.YYYY')`，将值视为使用函数中提供的格式格式化的日期。

* `=Date(InputDate, 'YY.MM.DD')`，将值视为使用函数中提供的格式格式化的日期。

* `=Num(InputDate)`，返回日期的数值。

Results table

| RowNo | InputDate | Date(InputDate) | Date(InputDate, 'DD.MM.YYYY') | Date(InputDate, 'YY.MM.DD') | Num(InputDate) |
| --- | --- | --- | --- | --- | --- |
| 1 | 35648 | 97-08-06 | 06.08.1997 | 97.08.06 | 35648 |
| 2 | 35648.375 | 97-08-06 | 06.08.1997 | 97.08.06 | 35648.375 |
| 3 | 8/6/97 | - | - | - | - |

结果显示了 `Date` 函数如何用于显示和格式化日期。在本例中，`DateFormat` 在加载脚本中设置为`YY-MM-DD` 。系统期望日期表达式使用此格式。可以看到，第 3 行 `InputDate` 的值 (`8/6/97`) 并不遵循这一格式，因此系统无法将其识别为日期，并返回 `NULL`。

将加载脚本中的 `DateFormat` 设置改为 `SET DateFormat='M/D/YY';` ，然后重新加载数据。现在，第 3 行的值将符合预期格式。系统会将其识别为有效日期并进行相应格式化。下表显示了使用新 `DateFormat` 设置后的结果。

Results table with variable statement `Set DateFormat='M/D/YY'`Set DateFormat='M/D/YY'

| RowNo | InputDate | Date(InputDate) | Date(InputDate, 'DD.MM.YYYY') | Date(InputDate, 'YY.MM.DD') | Num(InputDate) |
| --- | --- | --- | --- | --- | --- |
| 1 | 35648 | 97-08-06 | 06.08.1997 | 97.08.06 | 35648 |
| 2 | 35648.375 | 97-08-06 | 06.08.1997 | 97.08.06 | 35648.375 |
| 3 | 35648 | 97-08-06 | 06.08.1997 | 97.08.06 | 35648.375 |

## 示例 – 日期场景

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

#### 图表表达式

概述

数据集包含使用日期格式 `MM-DD-YYYY` 的销售数据。您希望使用日期格式 `DD/MM/YYYY` 。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `Customer`
  * `SalesDate`
  * `Amount`

* `DateFormat` 变量，其使用 `MM/DD/YYYY` 格式。

加载脚本

```
SET DateFormat='MM/DD/YYYY';
Example:
Load * inline [
Customer, SalesDate, Amount
Customer A, 2/15/2024, 100008
Customer B, 9/30/2024, 12500
Customer C, 12/28/2024, 15000
];
```

结果

加载数据并打开工作表。创建新表并将该字段添加为维度：

* ` Customer
                                       `

创建以下度量：

* `=Date(SalesDate ,'DD/MM/YYYY')` 将值视为使用函数中提供的格式格式化的日期。

* `=Sum(Amount)`计算销售成本的总价值。

Results table

| Customer | Date(SalesDate ,'DD/MM/YYYY') | Sum(Amount) |
| --- | --- | --- |
| Customer A | 15/02/2024 | 100008 |
| Customer B | 30/09/2024 | 12500 |
| Customer C | 28/12/2024 | 15000 |

通过查看结果，您可以看到，尽管数据集中的日期使用了一种格式，但 `Date` 函数允许您以不同的格式显示这些日期。