# DateFormat

此环境变量定义了应用程序中默认使用的日期格式以及按日期返回函数，如 `date()` 和 `date#()`。该格式用于解释和格式化日期。如果未定义变量，则在脚本运行时获取由区域设置设定的日期格式。

语法：

DateFormat

DateFormat 函数示例

| 示例 | 结果 |
| --- | --- |
| `Set DateFormat='M/D/YY'; //(US format)` | `DateFormat` 函数的使用将日期定义为美国格式，月/日/年。 |
| `Set DateFormat='DD/MM/YY'; //(UK date format)` | `DateFormat` 函数的使用将日期定义为英国格式，日/月/年。 |
| `Set DateFormat='YYYY/MM/DD'; //(ISO date format)` | `DateFormat` 函数的使用将日期定义为 ISO 格式，年/月/日。 |

## 区域设置

除非另有规定，本主题中的示例使用以下日期格式：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/NumberInterpretationVariables/DateFormat.htm)

#### 加载脚本和结果

概述

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

加载脚本包含：

* 日期数据集。

* `DateFormat` 函数，将使用美国日期格式。

在本例中，将数据集加载到名为 ‘`Transactions`’ 的表中。它包括一个 `date` 字段。使用美国 `DateFormat` 定义。加载文本日期时，此模式将用于隐式文本到日期的转换。

加载脚本

```

Set DateFormat='MM/DD/YYYY'; 

Transactions: 
LOAD 
date, 
month(date) as month, 
id, 
amount 
INLINE  
[ 
date,id,amount 
01/01/2022,1,1000 
02/01/2022,2,2123 
03/01/2022,3,4124 
04/01/2022,4,2431 
]; 						
```

结果

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

* `date`
* `month`

创建该度量：

`=sum(amount)`

结果表

| 日期 | 月 | =sum(amount) |
| --- | --- | --- |
| 01/01/2022 | 一月 | 1000 |
| 02/01/2022 | 二月 | 2123 |
| 03/01/2022 | 三月 | 4124 |
| 04/01/2022 | 四月 | 2431 |

`DateFormat` 定义 MM/DD/YYYY 用于将文本隐式转换为日期，这就是为什么 `date` 字段被正确解释为日期的原因。相同的格式用于显示日期，如结果表所示。

## 示例 2 – 更改系统变量

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

#### 加载脚本和结果

概述

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

加载脚本包含：

* 上一 中的相同数据集。

* `DateFormat` 函数将使用“DD/MM/YYYY”格式。

加载脚本

```

SET DateFormat='DD/MM/YYYY'; 
Transactions: 
LOAD 
date, 
month(date) as month, 
id, 
amount 
INLINE  
[ 
date,id,amount 
01/01/2022,1,1000 
02/01/2022,2,2123 
03/01/2022,3,4124 
04/01/2022,4,2431 
]; 					
```

结果

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

* `date`
* `month`

创建该度量：

`=sum(amount)`

结果表

| 日期 | 月 | =sum(amount) |
| --- | --- | --- |
| 01/01/2022 | 一月 | 1000 |
| 02/01/2022 | 一月 | 2123 |
| 03/01/2022 | 一月 | 4124 |
| 04/01/2022 | 一月 | 2431 |

由于 `DateFormat` 定义被设置为 “DD/MM/YYYY”，您可以看到，第一个“/”符号后的两位数字被解释为月份，因此所有记录都来自一月。

## 示例 3 – 日期解释

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

#### 加载脚本和结果

概述

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

加载脚本包含：

* 以数字格式显示日期的数据集。

* `DateFormat` 变量将使用“DD/MM/YYYY”格式。

* `date()` 变量，

加载脚本

```

SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
Load 
date(numerical_date), 
month(date(numerical_date)) as month, 
id, 
amount 
Inline  
[ 
numerical_date,id,amount 
43254,1,1000 
43255,2,2123 
43256,3,4124 
43258,4,2431 
]; 						
```

结果

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

* `date`
* `month`

创建该度量：

`=sum(amount)`

结果表

| 日期 | 月 | =sum(amount) |
| --- | --- | --- |
| 06/03/2022 | 六月 | 1000 |
| 06/04/2022 | 六月 | 2123 |
| 06/05/2022 | 六月 | 4124 |
| 06/07/2022 | 六月 | 2431 |

在加载脚本中，使用 `date()` 函数将数字日期转换为日期格式。因为您没有在函数中提供指定的格式作为第二个参数，所以使用了 `DateFormat` 格式。这将导致日期字段使用的格式为 “MM/DD/YYYY”。

## 示例 4 – 外部日期格式

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

#### 加载脚本和结果

概述

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

加载脚本包含：

* 日期数据集。

* `DateFormat` 变量，其使用 ‘DD/MM/YYYY' 格式，但未使用正斜杠注释。

加载脚本

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

 
Transactions: 
Load 
date, 
month(date) as month, 
id, 
amount 
Inline  
[ 
date,id,amount 
22-05-2022,1,1000 
23-05-2022,2,2123 
24-05-2022,3,4124 
25-05-2022,4,2431 
]; 
```

结果

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

* `date`
* `month`

创建该度量：

`=sum(amount)`

结果表

| 日期 | 月 | =sum(amount) |
| --- | --- | --- |
| 22-05-2022 | - | 1000 |
| 23-05-2022 | - | 2123 |
| 24-05-2022 | - | 4124 |
| 25-05-2022 | - | 2431 |

在初始加载脚本中，`DateFormat` 使用的是默认的“MM/DD/YYYY”。由于交易数据集中的 `date` 字段不是此格式，因此该字段不会解释为日期。这显示在结果表中，其中 `month` 字段值为空。

通过检查 `date` 字段的“标记”属性，可以在数据模型查看器中验证已解释的数据类型：

`Transactions` 表格的预览。请注意，`date` 字段的“标记”表示文本输入数据尚未隐式转换为日期/时间戳。

`Transactions` 表格的预览。请注意，`date` 字段的“标记”表示文本输入数据尚未隐式转换为日期/时间戳。

`Transactions`Transactions 表格的预览。请注意，`date`date 字段的“标记”表示文本输入数据尚未隐式转换为日期/时间戳。![预览“交易”表，突出显示“日期”字段的详细信息。](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/ui_dmv_TransactionsTablePreview1.png)

这可以通过启用 `DateFormat` 系统变量来解决：

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

删除双正斜杠并重新加载数据。

`Transactions` 表格的预览。请注意，`date` 字段的“标记”表示文本输入数据已隐式转换为日期/时间戳。

`Transactions` 表格的预览。请注意，`date` 字段的“标记”表示文本输入数据已隐式转换为日期/时间戳。

`Transactions`Transactions 表格的预览。请注意，`date`date 字段的“标记”表示文本输入数据已隐式转换为日期/时间戳。![修改 DateFormat 系统变量后预览“交易”表。](https://help.qlik.com/zh-CN/sense/May2025/Subsystems/Hub/Content/Resources/Images/ui_dmv_TransactionsTablePreview2.png)