---
schema_version: "1"
id: 3f32cbf9b9a904fdd19eb925bd383a7cb7cd78f8bb9a143d9f97e4172c262d49
title: 日期函数
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/pro/desktop/functions_functions_date.md
canonical_url: https://help.tableau.com/v0.0/pro/desktop/zh-cn/functions_functions_date.htm
source_site: help.tableau.com
content_type: documentation
content_hash: d2a37f51fc9efc60368b8fdbec194e44e6cae34284b0c58c365d883773e4d77e
description: Reference for Tableau date functions used in calculations.
---
[跳转到主要内容](#main-content)

# 日期函数

日期是许多数据源中的常见元素。如果字段包含可识别的日期，它将具有**日期**或**日期时间**数据类型。在可视化项中使用日期字段时，它们会获得一组特殊的功能，包括自动的日期层次钻取、特定于日期的筛选器选项和专门的日期格式化选项。在计算中使用日期通常需要使用特定于日期的函数。

## 熟悉其他日期概念

日期函数有时引用特定于日期的元素，包括 `date_part` 参数、可选的l `[start_of_week]` 参数和日期文本 (#)。这些元素将在本主题的末尾详细介绍。

还有其他几个可能感兴趣但不属于日期函数的主题：

- 格式化日期在可视化项中的显示方式：[自定义日期格式](https://help.tableau.com/v0.0/pro/desktop/zh-cn/dates_custom_date_formats.htm)
- 设置默认日期属性：[数据源的日期属性](https://help.tableau.com/v0.0/pro/desktop/zh-cn/date_properties.htm)
- 使用会计日期：[会计日期](https://help.tableau.com/v0.0/pro/desktop/zh-cn/dates_fiscal.htm)
- 使用 SO-8601 历：[ISO-8601 基于周的日历](https://help.tableau.com/v0.0/pro/desktop/zh-cn/dates_calendar.htm)

> [!TIP]
> 
> **提示**：您的字段已被识别为日期（它在“数据”窗格中有日期图标）并且您正在尝试控制它在可视化项中的显示方式？您可能需要对其进行格式化，而不是使用日期函数。例如，您希望将 22Sept2024 显示为 09/24。这是通过设置日期格式而不是计算来处理的。  
>   
> 请参见[自定义日期格式](https://help.tableau.com/v0.0/pro/desktop/zh-cn/dates_custom_date_formats.htm)和相关主题以了解如何使用日期字段。此页面上的日期函数允许您操作日期计算字段，而不是设置其显示格式。

## Tableau 中的可用日期函数

### DATE

将字符串和数字表达式转换为日期的类型转换函数，只要它们是可识别的格式。

<table class="table--plain"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>DATE(expression)</code></td></tr><tr><td>输出</td><td>日期</td></tr><tr><td>定义</td><td>在给定数字、字符串或日期 <code>&lt;expression&gt;</code> 的情况下返回日期。</td></tr><tr><td>示例</td><td><pre>DATE([Employee Start Date])</pre><pre>DATE("September 22, 2018") </pre><pre xml:space="preserve">DATE("9/22/2018")</pre><pre>DATE(#2018-09-22 14:52#)</pre></td></tr><tr><td>说明</td><td><p>与 <code><a href="#DATEPARS" class="xref">DATEPARSE</a></code> 不同，不需要提供模式，因为 <code>DATE</code> 会自动识别许多标准日期格式。但是，如果 <code>DATE</code> 不能识别输入，请尝试使用 <code>DATEPARSE</code> 并指定格式。</p><p><code><a href="#MAKEDATE" class="xref">MAKEDATE</a></code> 是另一个类似的函数，但是 <code>MAKEDATE</code> 要求输入年、月和日的数值。</p></td></tr></tbody></table>

### DATEADD

将指定数量的日期部分（月、日等）添加到开始日期。

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>DATEADD(date_part, interval, date)</code></td></tr><tr><td>输出</td><td>日期</td></tr><tr><td>定义</td><td>返回 <code>&lt;date&gt;</code>，该日期的指定 <code>&lt;<a href="#arg" class="xref">date_part</a>&gt;</code> 中添加了指定的数字 <code>&lt;interval&gt;</code>。例如，将开始日期增加 3 个月或 12 天。</td></tr><tr><td>示例</td><td><p>将所有的到期日推迟一周</p><pre>DATEADD('week', 1, [due date])</pre><p>将 2021 年 2 月 20 日加上 280 天</p><pre xml:space="preserve">DATEADD('day', 280, #2/20/21#) = #November 27, 2021#</pre></td></tr><tr><td>说明</td><td>支持 ISO 8601 日期。</td></tr></tbody></table>

### DATEDIFF

返回两个日期之间的日期部分（周、年等）的数量。

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>DATEDIFF(date_part, date1, date2, [start_of_week])</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>返回 <code>&lt;date1&gt;</code> 与 <code>&lt;date2&gt;</code> 之差（以 <code>&lt;<a href="#arg" class="xref">date_part</a>&gt;</code> 的单位表示）。例如，减去某人加入和离开乐队的日期，就可以知道他们在乐队里呆了多久。</td></tr><tr><td>示例</td><td><p>1986 年 3 月 25 日到 2021 年 2 月 20 日之间的天数</p><pre>DATEDIFF('day', #3/25/1986#, #2/20/2021#) = 12,751</pre><p>一个人在乐队里呆了几个月</p><pre>DATEDIFF('month', [date joined band], [date left band])</pre></td></tr><tr><td>说明</td><td>支持 ISO 8601 日期。</td></tr></tbody></table>

### DATENAME

以离散字符串形式返回指定日期部分的名称。

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>DATENAME(date_part, date, [start_of_week])</code></td></tr><tr><td>输出</td><td>字符串</td></tr><tr><td>定义</td><td>以字符串的形式返回 <code>&lt;date&gt;</code> 的 <code>&lt;<a href="#arg" class="xref">date_part</a>&gt;</code>。</td></tr><tr><td>示例</td><td><pre>DATENAME('year', #3/25/1986#) = "1986"</pre><pre>DATENAME('month', #1986-03-25#) = "March"</pre></td></tr><tr><td>说明</td><td><p>支持 ISO 8601 日期。</p><p>一个非常类似的计算是 <a href="#DATEPART" class="xref">DATEPART</a>，它以连续整数的形式返回指定日期部分的值。<code>DATEPART</code> 可能更快，因为它是一个数值运算。</p><p>通过更改计算结果的属性（维度或度量、连续或离散）和日期格式，可以将 <code>DATEPART</code> 和 <code>DATENAME</code> 的结果格式设置为相同。</p><p>反函数是 <a href="#DATEPARS" class="xref">DATEPARSE</a>，它接受一个字符串值并将其格式化为日期。</p></td></tr></tbody></table>

### DATEPARSE

以日期形式返回特定格式的字符串。

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>DATEPARSE(date_format, date_string)</code></td></tr><tr><td>输出</td><td>日期</td></tr><tr><td>定义</td><td><code>&lt;date_format&gt;</code> 参数将描述 <code>&lt;date_string&gt;</code> 字段的排列方式。由于可通过各种方式对字符串字段进行排序，因此 <code>&lt;date_format&gt;</code> 必须完全匹配。有关完整解释和格式设置详细信息，请参见<a href="https://help.tableau.com/current/pro/desktop/zh-cn/data_dateparse.htm" target="_blank">将字段转换为日期字段</a>。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">DATEPARSE('yyyy-MM-dd', "1986-03-25") = #March 25, 1986#</pre></td></tr><tr><td>说明</td><td><p><code><a href="#top" class="xref">DATE</a></code>是一个类似的函数，可以自动识别许多标准的日期格式。如果 <code>DATE</code> 不能识别输入模式，<code>DATEPARSE</code> 可能是更好的选择。</p><p><code><a href="#MAKEDATE" class="xref">MAKEDATE</a></code> 是另一个类似的函数，但是 <code>MAKEDATE</code> 要求输入年、月和日的数值。</p><p>反函数是 <code><a href="#DATEPART" class="xref">DATEPART</a></code>（整数输出）和 <code><a href="#DATENAME" class="xref">DATENAME</a></code>（字符串输出），它将日期分开并返回其各部分的值。</p></td></tr><tr><td>数据库限制</td><td><p><code>DATEPARSE</code> 可通过以下连接器获得：非旧版 Excel 和文本文件连接、Amazon EMR Hadoop Hive、Cloudera Hadoop、Google 表格、Hortonworks Hadoop Hive、MapR Hadoop Hive、MySQL、Oracle、PostgreSQL 以及 Tableau 数据提取。有些格式可能并非适用于所有连接。</p><p>Hive 变体不支持 <code>DATEPARSE</code>。仅支持 Denodo、Drill 和 Snowflake。</p></td></tr></tbody></table>

### DATEPART

以整数形式返回指定日期部分的名称。

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>DATEPART(date_part, date, [start_of_week])</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数的形式返回 <code>&lt;date&gt;</code> 的 <code>&lt;<a href="#arg" class="xref">date_part</a>&gt;</code>。</td></tr><tr><td>示例</td><td><pre>DATEPART('year', #1986-03-25#) = 1986</pre><pre>DATEPART('month', #1986-03-25#) = 3</pre></td></tr><tr><td>说明</td><td><p>支持 ISO 8601 日期。</p><p>一个非常类似的计算是 <code><a href="#DATENAME" class="xref">DATENAME</a></code>，它以离散字符串的形式返回指定日期部分的名称。<code>DATEPART</code> 可能更快，因为它是一个数值运算。通过更改字段的属性（维度或度量、连续或离散）和日期格式，可以将 <code>DATEPART</code> 和 <code>DATENAME</code> 的结果格式设置为相同。</p><p>反函数是 <code><a href="#DATEPARS" class="xref">DATEPARSE</a></code>，它接受一个字符串值并将其格式化为日期。</p></td></tr></tbody></table>

### DATETRUNC

可以将此函数视为日期舍入。它获取特定的日期，并返回该日期在所需的特定程度上的版本。由于每个日期都必须有日、月、季度和年的值，因此 `DATETRUNC` 将这些值设置为指定日期部分之前每个日期部分的最小值。有关详细信息，请参考见示例。

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>DATETRUNC(date_part, date, [start_of_week])</code></td></tr><tr><td>输出</td><td>日期</td></tr><tr><td>定义</td><td>按 <code>&lt;<a href="#arg" class="xref">date_part</a>&gt;</code>指定的准确度截断 <code>&lt;date&gt;</code>。此函数返回新日期。例如，以月份级别截断处于月份中间的日期时，此函数返回当月的第一天。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">DATETRUNC('day', #9/22/2018#) = #9/22/2018#</pre><pre xml:space="preserve">DATETRUNC('iso-week', #9/22/2018#) = #9/17/2018#</pre><p>（包含 2018 年 9 月 22 日的一周中的星期一）</p><pre xml:space="preserve">DATETRUNC(quarter, #9/22/2018#) = #7/1/2018# </pre><p>（包含 2018 年 9 月 22 日的季度的第一天）</p><p class="note">注意：对于周和 iso 周，<code>start_of_week</code> 有作用。ISO 周始终从星期一开始。对于本例的区域设置，未指定的 <code>start_of_week</code> 意味着一周从星期日开始。</p></td></tr><tr><td>说明</td><td><p>支持 ISO 8601 日期。</p><p>例如，您不应使用 <code>DATETRUNC</code> 来停止在可视化项中显示日期时间字段的时间。如果要截断日期的显示方式而不是舍入其精度，请<a href="https://help.tableau.com/current/pro/desktop/zh-cn/dates_custom_date_formats.htm" target="_blank">调整格式</a>。</p><p>举例来说，如果在可视化项中格式为显示秒，<code>DATETRUNC('day', #5/17/2022 3:12:48 PM#)</code> 将显示为 <code>5/17/2022 12:00:00 AM</code>。该值被截断为天，但显示为秒。</p></td></tr></tbody></table>

### DAY

以整数形式返回一个月中的第几天 (1-31)。

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>DAY(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数的形式返回给定 <code>&lt;date&gt;</code> 的天。</td></tr><tr><td>示例</td><td><pre>Day(#September 22, 2018#) = 22</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#WEEK" class="xref">WEEK</a></code>、<code><a href="#MONTH" class="xref">MONTH</a></code>、<code><a href="#QUARTER" class="xref">QUARTER</a></code>、<code><a href="#YEAR" class="xref">YEAR</a></code> 以及 ISO 等效值。</td></tr></tbody></table>

### ISDATE

检查字符串是否为有效的日期格式。

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>ISDATE(string)</code></td></tr><tr><td>输出</td><td>布尔值</td></tr><tr><td>定义</td><td>如果给定 <code>&lt;string&gt;</code> 为有效日期，则返回 true。</td></tr><tr><td>示例</td><td><pre>ISDATE(09/22/2018) = true</pre><pre>ISDATE(22SEP18) = false</pre></td></tr><tr><td>说明</td><td>所需的参数必须是字符串。ISDATE 不能用于日期数据类型的字段，计算将返回错误。</td></tr></tbody></table>

### ISOQUARTER

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>ISOQUARTER(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数的形式返回给定 <code>&lt;date&gt;</code> 的基于 ISO8601 周的季度。</td></tr><tr><td>示例</td><td><pre>ISOQUARTER(#1986-03-25#) = 1</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#ISOWEEK" class="xref">ISOWEEK</a></code>、<code><a href="#ISOWEEKDAY" class="xref">ISOWEEKDAY</a></code>、<code><a href="#ISOYEAR" class="xref">ISOYEAR</a></code>, 以及 -ISO 等效值。</td></tr></tbody></table>

### ISOWEEK

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>ISOWEEK(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数的形式返回给定 <code>&lt;date&gt;</code> 基于 ISO8601 周的周。</td></tr><tr><td>示例</td><td><pre>ISOWEEK(#1986-03-25#) = 13</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#ISOWEEKDAY" class="xref">ISOWEEKDAY</a></code>、<code><a href="#ISOQUARTER" class="xref">ISOQUARTER</a></code>、<code><a href="#ISOYEAR" class="xref">ISOYEAR</a></code>, 以及 -ISO 等效值。</td></tr></tbody></table>

### ISOWEEKDAY

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>ISOWEEKDAY(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数的形式返回给定 <code>&lt;date&gt;</code> 的基于 ISO8601 周的工作日。</td></tr><tr><td>示例</td><td><pre>ISOWEEKDAY(#1986-03-25#) = 2</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#ISOWEEK" class="xref">ISOWEEK</a></code>、<code><a href="#ISOQUARTER" class="xref">ISOQUARTER</a></code>、<code><a href="#ISOYEAR" class="xref">ISOYEAR</a></code>, 以及 -ISO 等效值。</td></tr></tbody></table>

### ISOYEAR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>ISOYEAR(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数的形式返回给定 <code>&lt;date&gt;</code> 的基于 ISO8601 年份的工作日。</td></tr><tr><td>示例</td><td><pre>ISOYEAR(#1986-03-25#) = 1,986</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#ISOWEEK" class="xref">ISOWEEK</a></code>、<code><a href="#ISOWEEKDAY" class="xref">ISOWEEKDAY</a></code>、<code><a href="#ISOQUARTER" class="xref">ISOQUARTER</a></code>, 以及 -ISO 等效值。</td></tr></tbody></table>

### MAKEDATE

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MAKEDATE(year, month, day)</code></td></tr><tr><td>输出</td><td>日期</td></tr><tr><td>定义</td><td>返回一个依据指定 <code>&lt;year&gt;</code>、<code>&lt;month&gt;</code> 和 <code>&lt;day&gt;</code> 构造的日期值。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">MAKEDATE(1986,3,25) = #1986-03-25#</pre></td></tr><tr><td>说明</td><td><p class="note"><b>注意，</b>输入错误的值将被调整为一个日期，例如 <code>MAKEDATE(2020,4,31) = May 1, 2020</code>，而不是返回指出没有 4 月 31 日的错误。</p><p>可用于 Tableau 数据提取。检查在其他数据源中的可用性。</p><p><code>MAKEDATE</code> 要求为日期的各个部分输入数字。如果您的数据是应该是日期的字符串，请尝试 <code><a href="#top" class="xref">DATE</a></code> 函数。<code>DATE</code> 可自动识别许多标准的日期格式。如果 <code>DATE</code> 不能识别输入，请尝试使用 <code><a href="#DATEPARS" class="xref">DATEPARSE</a></code>。</p></td></tr></tbody></table>

### MAKEDATETIME

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MAKEDATETIME(date, time)</code></td></tr><tr><td>输出</td><td>日期时间</td></tr><tr><td>定义</td><td>返回合并了 <code>&lt;date&gt;</code> 和 <code>&lt;time&gt;</code>的日期时间。日期可以是 date、datetime 或 string 类型。时间必须是 datetime。</td></tr><tr><td>示例</td><td><pre>MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM#</pre><pre>MAKEDATETIME([Date], [Time]) = #1/1/2001 6:00:00 AM#</pre></td></tr><tr><td>说明</td><td><p>此函数仅适用于与 MySQL 兼容的连接（对于 Tableau 为 MySQL 和 Amazon Aurora）。</p><p><code><a href="#MAKETIME" class="xref">MAKETIME</a></code> 是一个类似的函数，可用于 Tableau 数据提取和其他一些数据源。</p></td></tr></tbody></table>

### MAKETIME

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MAKETIME(hour, minute, second)</code></td></tr><tr><td>输出</td><td>日期时间</td></tr><tr><td>定义</td><td>返回一个依据指定 <code>&lt;hour&gt;</code>、<code>&lt;minute&gt;</code> 和 <code>&lt;second&gt;</code> 构造的日期值。</td></tr><tr><td>示例</td><td><pre>MAKETIME(14, 52, 40) = #1/1/1899 14:52:40#</pre></td></tr><tr><td>说明</td><td><p>由于 Tableau 不支持时间数据类型，只支持日期时间，因此输出是日期时间。字段的日期部分将是 1/1/1899。</p><p>类似于 <code><a href="#MAKEDATETIME" class="xref">MAKEDATETIME</a></code> 的函数，只适用于 MYSQL 兼容的连接。</p></td></tr></tbody></table>

### MAX

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MAX(expression)</code> 或 <code>MAX(expr1, expr2)</code></td></tr><tr><td>输出</td><td>与参数相同的数据类型，或者，如果参数的任何部分为 null，则为 <code>NULL</code>。</td></tr><tr><td>定义</td><td><p>返回两个参数（必须为相同数据类型）中的最大值。</p><p><code>MAX</code> 也可以聚合形式应用于单个字段。</p></td></tr><tr><td>示例</td><td><pre xml:space="preserve">MAX(4,7) = 7<br>MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021# <br>MAX([Name]) = "Zander"</pre></td></tr><tr><td>说明</td><td><p><b>对于字符串</b></p><p><code>MAX</code> 通常是按字母顺序排在最后的值。</p><p class="note">对于数据库数据源，<code>MAX</code> 字符串值在数据库为该列定义的排序序列中最高。</p><p><b>对于日期</b></p><p>对于日期，<code>MAX</code> 是最近的日期。如果 <code>MAX</code> 是聚合，结果不会有日期层次结构。如果 <code>MAX</code> 是比较，结果将保留日期层次结构。</p><p><b>作为聚合</b></p><p><code>MAX(expression)</code> 是聚合函数，返回单个聚合结果。这在可视化项中显示为 <code>AGG(expression)</code>。</p><p><b>作为比较</b></p><p><code>MAX(expr1, expr2)</code> 比较这两个值并返回一个行级值。</p><p>另请参见 <code><a href="#MIN" class="xref">MIN</a></code>。</p></td></tr></tbody></table>

### MIN

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MIN(expression)</code> 或 <code>MIN(expr1, expr2)</code></td></tr><tr><td>输出</td><td>与参数相同的数据类型，或者，如果参数的任何部分为 null，则为 <code>NULL&nbsp;</code>。</td></tr><tr><td>定义</td><td><p>返回两个参数（必须为相同数据类型）中的最小值。</p><p><code>MIN </code> 也可以聚合形式应用于单个字段。</p></td></tr><tr><td>示例</td><td><pre xml:space="preserve">MIN(4,7) = 4<br>MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#<br>MIN([Name]) = "Abebi"</pre></td></tr><tr><td>说明</td><td><p><b>对于字符串</b></p><p><code>MIN</code> 通常是按字母顺序排列在前面的值。</p><p class="note">对于数据库数据源，<code>MIN</code> 字符串值在数据库为该列定义的排序序列中最低。</p><p><b>对于日期</b></p><p>对于日期，<code>MIN</code> 是最早的日期。如果 <code>MIN</code> 是聚合，结果不会有日期层次结构。如果 <code>MIN</code> 是比较，结果将保留日期层次结构。</p><p><b>作为聚合</b></p><p><code>MIN(expression)</code> 是聚合函数，返回单个聚合结果。这在可视化项中显示为 <code>AGG(expression)</code>。</p><p><b>作为比较</b></p><p><code>MIN(expr1, expr2)</code> 比较这两个值并返回一个行级值。</p><p>另请参见 <code><a href="#MAX" class="xref">MAX</a></code>。</p></td></tr></tbody></table>

### MONTH

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>MONTH(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数形式返回给定 <code>&lt;date&gt;</code> 的月份。</td></tr><tr><td>示例</td><td><pre>MONTH(#1986-03-25#) = 3</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#DAY" class="xref">DAY</a></code>、<code><a href="#WEEK" class="xref">WEEK</a></code>、<code><a href="#QUARTER" class="xref">QUARTER</a></code>、<code><a href="#YEAR" class="xref">YEAR</a></code> 以及 ISO 等效值</td></tr></tbody></table>

### NOW

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>NOW()</code></td></tr><tr><td>输出</td><td>日期时间</td></tr><tr><td>定义</td><td>返回当前本地系统日期和时间。</td></tr><tr><td>示例</td><td><pre>NOW() = 1986-03-25 1:08:21 PM</pre></td></tr><tr><td>说明</td><td><p><code>NOW</code> 不接受参数。</p><p>另请参见返回日期而不是日期时间的类似计算 <code><a href="#TODAY" class="xref">TODAY</a></code>。</p><p>如果数据源是实时连接，则系统日期和时间可能位于另一个时区。有关如何解决此问题的详细信息，请参见<a href="https://kb.tableau.com/articles/issue/now-function-returns-utc-time?lang=zh-cn">知识库</a>。</p></td></tr></tbody></table>

### QUARTER

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>QUARTER(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数形式返回给定 <code>&lt;date&gt;</code> 的季度。</td></tr><tr><td>示例</td><td><pre>QUARTER(#1986-03-25#) = 1</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#DAY" class="xref">DAY</a></code>、<code><a href="#WEEK" class="xref">WEEK</a></code>、<code><a href="#MONTH" class="xref">MONTH</a></code>、<code><a href="#YEAR" class="xref">YEAR</a></code> 以及 ISO 等效值</td></tr></tbody></table>

### TODAY

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>TODAY()</code></td></tr><tr><td>输出</td><td>日期</td></tr><tr><td>定义</td><td>返回当前本地系统日期。</td></tr><tr><td>示例</td><td><pre>TODAY() = 1986-03-25</pre></td></tr><tr><td>说明</td><td><p><code>TODAY</code> 不接受参数。</p><p>另请参见返回日期时间而不是日期的类似计算 <a href="#NOW" class="xref">NOW</a>。</p><p>如果数据源是实时连接，则系统日期可能位于另一个时区。有关如何解决此问题的详细信息，请参见<a href="https://kb.tableau.com/articles/issue/now-function-returns-utc-time?lang=zh-cn">知识库</a>。</p></td></tr></tbody></table>

### WEEK

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>WEEK(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数形式返回给定 <code>&lt;date&gt;</code> 的周。</td></tr><tr><td>示例</td><td><pre>WEEK(#1986-03-25#) = 13</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#DAY" class="xref">DAY</a></code>、<code><a href="#MONTH" class="xref">MONTH</a></code>、<code><a href="#QUARTER" class="xref">QUARTER</a></code>、<code><a href="#YEAR" class="xref">YEAR</a></code> 以及 ISO 等效值</td></tr></tbody></table>

### YEAR

<table class="table--plain" style="width: 100%;"><colgroup><col style="width: 20%;"><col></colgroup><tbody><tr><td>语法</td><td><code>YEAR(date)</code></td></tr><tr><td>输出</td><td>整数</td></tr><tr><td>定义</td><td>以整数形式返回给定 <code>&lt;date&gt;</code> 的年份。</td></tr><tr><td>示例</td><td><pre xml:space="preserve">YEAR(#1986-03-25#) = 1,986</pre></td></tr><tr><td>说明</td><td>另请参见 <code><a href="#DAY" class="xref">DAY</a></code>、<code><a href="#WEEK" class="xref">WEEK</a></code>、<code><a href="#MONTH" class="xref">MONTH</a></code>、<code><a href="#QUARTER" class="xref">QUARTER</a></code> 以及 ISO 等效值</td></tr></tbody></table>

## date\_part

Tableau 中的许多日期函数都采用参数 `date_part`，这是一个字符串常量，它告诉函数要考虑日期的哪一部分，例如日、周、季度等。您可以使用的有效 `date_part` 值包括：

| date\_part | 值 |
| --- | --- |
| `'year'` | 四位数年份 |
| `'quarter'` | 1-4 |
| `'month'` | 1-12 或 "January"、"February" 等 |
| `'dayofyear'` | 一年中的第几天；1 月 1 日为 1、2 月 1 日为 32，依此类推 |
| `'day'` | 1-31 |
| `'weekday'` | 1-7 或 "Sunday"、"Monday" 等 |
| `'week'` | 1-52 |
| `'hour'` | 0-23 |
| `'minute'` | 0-59 |
| `'second'` | 0-60 |
| `'iso-year'` | 4 位数 ISO 8601 年份 |
| `'iso-quarter'` | 1-4 |
| `'iso-week'` | 1-52，每周始终从星期一开始 |
| `'iso-weekday'` | 1-7，每周始终从星期一开始 |

## `[start_of_week]` 参数

某些函数有可选参数 `[start_of_week]`。`start_of_week` 参数可用于指定哪一天被视为一周的第一天，例如“Sunday”或“Monday”。如果省略它，则一周的开始由数据源确定。请参见[数据源的日期属性](https://help.tableau.com/v0.0/pro/desktop/zh-cn/date_properties.htm)。

在下面的例子中，9 月 22 日是星期日，9 月 24 日是星期二。DATEDIFF 函数用于计算这些日期之间的周数。

`DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'monday') = 1`

- 由于 start\_of\_week 为“monday”（星期一），因此这些日期在不同的周中。

`DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'sunday') = 0`

- 由于 start\_of\_week 为“sunday”（星期日），因此这些日期在同一周内。

## 日期文本 (#)

示例通常在日期表达式中使用井号 (#)。这是日期文本，类似于对文本字符串使用引号，它告诉 Tableau 符号内的值是日期。

如果没有日期文本，日期可能会被解释为各种其他数据类型。例如：

<table style="width: 100%;"><colgroup><col><col><col></colgroup><tbody><tr><td style="font-weight: bold;">格式</td><td style="font-weight: bold;">数据类型</td><td style="font-weight: bold;">值</td></tr><tr><td>'March 25, 1986'</td><td>字符串</td><td>'March 25, 1986'</td></tr><tr><td>#3/25/1986#</td><td>日期</td><td>#3/25/1986#</td></tr><tr><td>03/25/1986</td><td>浮点小数</td><td>0.00006042</td></tr><tr><td>1986-03-25</td><td>整数</td><td>1,958</td></tr><tr><td>03/25/1986</td><td>-</td><td>无效</td></tr></tbody></table>

![突出显示各种日期格式图标的“数据”窗格。](/tableau/next/zh-cn/pro/desktop/zh-cn/Img/datefunc_dateformats.png)

有关详细信息，请参见[文本表达式语法](https://help.tableau.com/v0.0/pro/desktop/zh-cn/functions_operators.htm#literals)。

## 创建日期计算

练习使用 Superstore 示例数据源创建日期计算。

1. 在 Tableau Desktop 中，连接到 Tableau 附带的**“Sample - Superstore”**已保存数据源。
2. 打开一个工作表。
3. 从“**数据**”窗格中的“维度”下，将“Order Date”（订单日期）拖到“行”功能区。
4. 在“**行**”功能区上，单击“**YEAR(Order Date)**”字段上的加号图标 (**+**)。
    
    “QUARTER(Order Date)”将添加到“行”功能区，并且视图将更新。
    
    ![按年份和季度显示订单数据的表格。](/tableau/next/zh-cn/pro/desktop/zh-cn/Img/datefunctions2.png)
5. 在“行”功能区上，单击“QUARTER(Order Date)”字段上的加号图标 (**+**)，以下钻到“MONTH(Order Date)”。
    
    ![显示订单日期的年份、季度和月份的表格。](/tableau/next/zh-cn/pro/desktop/zh-cn/Img/datefunctions3.png)
6. 选择“分析”\>“创建计算字段”。
7. 在打开的计算编辑器中，执行以下操作：

- 将计算字段命名为“Quarter Date”（季度日期）。
- 输入以下公式：`DATETRUNC('quarter', [Order Date])`
- 完成后，单击**“确定”**。
    
    新的日期计算将出现在“**数据**”窗格中的“**维度**”下。就像其他字段一样，您可以在一个或多个可视化项中使用该字段。

9. 从“**数据**”窗格中的“维度”下，将“Quarter Date”（季度日期）拖到“行”功能区，并将其放在“MONTH(Order Date)”右侧。可视化项将更新为包含年份值。这是因为 Tableau 将日期数据累积到最高详细级别。
10. 在“行”功能区上，右键单击“YEAR(Quarter Date)”，并选择“精确日期”。
11. 在“行”功能区上，再次右键单击“YEAR(Quarter Date)”，并选择“离散”。
    
    可视化项将更新为包含表中每一行的准确季度日期。
    
    ![按年、季度、月和季度日期显示订单日期的表格。](/tableau/next/zh-cn/pro/desktop/zh-cn/Img/datefunctions1.png)