# today 脚本和图表功能

此函数用于返回当前日期。函数以 `DateFormat` 系统变量格式返回值。

today([ timer\_mode])

返回数据类型： 双

`today()` 函数可以在加载脚本或图表对象中使用。

默认 `timer_mode` 值为 1。

参数

| 参数 | 描述 |
| --- | --- |
| timer\_mode | 可以具有以下值：<br><br>0（最后完成数据加载的日期）<br>1（函数调用的日期）<br>2（应用程序打开的日期）<br><br>信息注释如果在加载脚本中使用此函数，则 timer\_mode=0 将会生成最后完成数据加载的日期，而 timer\_mode=1 将会提供当前数据加载的日期。 |

函数示例

| timer\_mode 值 | 结果（如果在加载脚本中使用） | 在图表对象中使用时的结果 |
| --- | --- | --- |
| 0 | 以 `DateFormat` 系统变量格式返回最近一次数据重新加载之前最后一次成功数据重新加载的日期。 | 以 `DateFormat` 系统变量格式返回最新数据重新加载的日期。 |
| 1 | 以 `DateFormat` 系统变量格式返回最新数据重新加载的日期。 | 以 `DateFormat` 系统变量格式返回函数调用的日期。 |
| 2 | 以 `DateFormat` 系统变量格式返回应用程序中用户会话开始的日期。除非用户重新加载脚本，否则不会更新该脚本。 | 以 `DateFormat` 系统变量格式返回应用程序中用户会话开始的日期。一旦新会话开始或重新加载应用程序中的数据，将刷新此属性。 |

## 适合使用它的情况

`today()` 函数通常用作表达式中的组件。例如，它可用于计算截至当前日期的一个月内累积的利息。

下表提供了 `today()` 函数返回的结果的解释，给出了 `timer_mode` 参数的不同值：

## 区域设置

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

#### 加载脚本和结果

概述

本例使用 `today()` 函数创建三个变量。每个变量都使用其中一个 `timer_mode` 选项来演示其效果。

为了演示变量的用途，请重新加载脚本，然后在 24 小时后再次重新加载脚本。这将导致 `today(0)` 和 `today(1)` 变量显示不同的值，从而正确地显示它们的用途。

加载脚本

```
LET vPreviousDataLoad = today(0);
LET vCurrentDataLoad = today(1);
LET vApplicationOpened = today(2);
```

结果

第二次加载数据后，使用下面的说明创建三个文本框。

首先，为先前加载的数据创建一个文本框。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 将以下度量值添加到对象：

   `=vPreviousDataLoad`

3. 在外观下，选择 Show titles 并向对象添加标题“上次重新加载时间”。

接下来，为当前正在加载的数据创建一个文本框。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 将以下度量值添加到对象：

   `=vCurrentDataLoad`

3. 在外观下，选择 Show titles 并向对象添加标题“当前重新加载时间”。

创建最后一个文本框，以显示用户在应用程序中的会话何时启动。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 将以下度量值添加到对象：

   `=vApplicationOpened`

3. 在外观下，选择 Show titles 并向对象添加标题“用户会话已开始”。

使用加载脚本中的 `today()` 函数创建的变量图

使用加载脚本中的 `today()` 函数创建的变量图

使用加载脚本中的 `today()`today() 函数创建的变量图 ![Diagram showing what each of the three generated textboxes could look like after using the today() function to load the variables via the load script.](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-today-example-variables-script.png)

上图显示了每个已创建变量的示例值。例如，这些值可以如下所示：

* 上次重新加载时间：06/22/2022

* 当前重新加载时间：06/23/2022

* 用户会话开始：06/23/2022

## 示例 2 –不使用加载脚本生成对象

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

#### 加载脚本和图表表达式

概述

以下示例使用 `today()` 函数创建三个图表对象。每个图表对象都使用其中一个 `timer_mode` 选项来演示其效果。

此示例没有加载脚本。

结果

第二次加载数据后，创建三个文本框。

首先，为最新数据重新加载创建一个文本框。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 添加以下 度量。

   `=today(0)`

3. 在外观下，选择显示标题并将标题“最新数据重新加载”添加到对象。

接下来，创建一个文本框以显示当前时间。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 添加以下度量：

   `=today(1)`

3. 在外观下，选择显示标题并向对象添加标题“当前时间”。

创建最后一个文本框，以显示用户在应用程序中的会话何时启动。

执行以下操作：

1. 使用文本和图像图表对象，创建一个文本框。

2. 添加以下度量：

   `=today(2)`

3. 在外观下，选择显示标题并向对象添加标题“用户会话开始”。

使用无加载脚本的 `today()` 函数创建的对象的图表

使用无加载脚本的 `today()` 函数创建的对象的图表

使用无加载脚本的 `today()`today() 函数创建的对象的图表 ![Diagram showing what each of the three generated textboxes could look like after using the today() function to create chart objects only, with no data loaded into the application.](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-today-example-variables-chart.png)

上图显示了每个已创建对象的示例值。例如，这些值可以如下所示：

* 最后数据重新加载时间：06/23/2022

* 当前时间：06/23/2022

* 用户会话开始：06/23/2022

“最新数据重新加载”图表对象使用 `timer_mode` 值为 0。这会返回上次数据成功重新加载的时间戳。

“当前时间”图表对象使用为 1 的 `timer_mode` 值。此函数根据系统时钟返回当前时间。如果刷新了工作表或对象，则将更新此值。

“用户会话开始”图表对象使用值为 2 的 `timer_mode`。这会返回应用程序打开以及用户会话开始的时间戳。

## 示例 3 – 场景

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

#### 加载脚本和图表表达式

概述

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

加载脚本包含：

* 包含一组贷款余额的 数据集，该数据集加载到名为 `Loans` 的表中。

* 包含贷款 ID、月初余额和每年每笔贷款的简单利率字段的表格数据。

最终用户希望有一个图表对象，该对象按贷款 ID 显示月初至今每笔贷款的应计利息。尽管应用程序每周只重新加载一次，但用户希望在刷新对象或应用程序时刷新结果。

加载脚本

```
Loans:
Load
*
Inline 
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
```

结果

执行以下操作：

1. 加载数据并打开工作表。新建表格。

2. 添加以下字段作为维度：

   * `loan_id`

   * `start_balance`

3. 接下来，创建一个度量来计算累计利息：

   `=start_balance*(rate*(today(1)-monthstart(today(1)))/365)`

4. 将度量的数字格式设置为金额。

结果表

| loan\_id | start\_balance | =start\_balance\*(rate\*(today(1)-monthstart(today(1)))/365) |
| --- | --- | --- |
| 8188 | $10000.00 | $16.44 |
| 8189 | $15000.00 | $58.56 |
| 8190 | $17500.00 | $28.77 |
| 8191 | $21000.00 | $48.90 |
| 8192 | $90000.00 | $517.81 |

`monthstart()` 函数使用 `today()` 函数返回今天的日期作为唯一参数，返回当前月份的开始日期。通过从当前日期中减去该结果，再次使用 `today()` 函数，该表达式返回本月迄今为止已过的天数。

然后将该值乘以利率并除以 365，以返回该期间产生的实际利率。然后将结果乘以贷款的起始余额，以返回本月迄今为止累计的利息。

由于表达式内的 `timer_mode` 函数中使用值 1 作为 `today()` 参数，因此每次刷新图表对象时（通过打开应用程序、刷新页面、在工作表之间移动等），返回的日期将为当前日期，结果将相应刷新。