日期函数

本文介绍 Tableau 中的日期函数及其用途。它还演示如何使用示例创建日期计算。

本文内容

创建日期计算

按照下面的步骤进行操作以了解如何创建日期计算。

  1. 在 Tableau Desktop 中,连接到 Tableau 附带的“Sample - Superstore”已保存数据源。

  2. 导航到工作表。

  3. 从“数据”窗格中的“维度”下,将“Order Date”(订单日期)拖到“行”功能区。

  4. 在“”功能区上,单击“YEAR(Order Date)”字段上的加号图标 (+)。

    “QUARTER(Order Date)”将添加到“行”功能区,并且视图将更新。

  5. “行”功能区上,单击“QUARTER(Order Date)”字段上的加号图标 (+),以下钻到“MONTH(Order Date)”。

  6. 选择“分析”>“创建计算字段”

  7. 在打开的计算编辑器中,执行以下操作:

    • 将计算字段命名为“Quarter Date”(季度日期)。

    • 输入以下公式:

      DATETRUNC('quarter', [Order Date])

    • 完成后,单击“确定”

      新的日期计算将出现在“数据”窗格中的“维度”下。就像其他字段一样,您可以在一个或多个可视化项中使用该字段。

  8. 从“数据”窗格中的“维度”下,将“Quarter Date”(季度日期)拖到“行”功能区,并将其放在“MONTH(Order Date)”右侧。

    可视化项将更新为包含年份值。这是因为 Tableau 将日期数据累积到最高详细级别。

  9. 在“行”功能区上,右键单击“YEAR(Quarter Date)”,并选择“精确日期”

  10. 在“行”功能区上,再次右键单击“YEAR(Quarter Date)”,并选择“离散”

    可视化项将更新为包含表中每一行的准确季度日期。

为何使用日期函数

日期函数允许您对数据源中的日期进行操作。

例如,您可能有一个各个值为年、月、日的日期字段 (2004-04-15)。您可以使用日期函数(例如 DATETRUNC 函数)依据这些现有值创建新的日期值。例如,您可以查找任何现有日期值的季度开始日期。

日期计算可能如下所示:

DATETRUNC('quarter', [Order Date])

因此,如果原始日期为“3/27/2011”,则使用上面的计算会返回“1/1/2011”,指明 1 季度的开始日期为 1 月 1 日。如果原始日期为“5/3/2011”,则计算将返回“4/1/2011”,指明 2 季度的开始日期为 4 月 1 日(一年过去四个月)。

有关示例,请参见下面的创建日期计算部分。

公历与 ISO 8601 标准

如果使用 .hyper 数据提取,则可以使用传统的公历或 ISO 8601 标准计算日期函数。有关创建 .hyper 数据提取的详细信息,请参见数据提取升级为 .hyper 格式

ISO 8601 格式是一种用于计算日期和时间的国际标准,它在一年的起始周(第 1 周)的计算方式上与公历不同。在公历中,用户可以定义一周从哪一天开始。在 ISO 8601 标准中,一周始终从星期一开始。

在公历中,在新的一年开始时,该年的第 1 周计为在 1 月 1 日开始,而不管 1 月 1 日是一周中的哪一天。如果 1 月 1 日为星期六,则第 1 周将有一天在该周,并且第 2 周将在下一个星期日开始。

在 ISO 8601 格式中,新年的第 1 周在星期一开始,并且该周在 1 月份有四天以上。举例来说,如果 1 月 1 日为星期六,则第 1 周将不会开始,而是直到下一个星期一(1 月 3 日)才开始。通过这种方式计算日期可确保新年的第 1 周有一致的天数。

Tableau 中的可用日期函数

函数

语法

说明

DATEADD

DATEADD(date_part, interval, date)

返回指定日期,该日期的指定 date_part 中添加了指定的数字 interval

支持 ISO 8601 日期。

示例:

DATEADD('month', 3, #2004-04-15#) = 2004-07-15 12:00:00 AM

该表达式会向日期 #2004-04-15# 添加三个月。

DATEDIFF

DATEDIFF(date_part, date1, date2, [start_of_week])

返回 date1date2 之差(以 date_part 的单位表示)。

start_of_week 参数(可用于指定哪一天是一周的第一天)是可选的。可能的值为“monday”、“tuesday”等。如果省略,一周的开始由数据源确定。请参见数据源的日期属性

支持 ISO 8601 日期。

示例:

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

第一个表达式返回 1,因为当 start_of_week 为 'monday' 时,9 月 22(星期日)和 9 月 24(星期二)不属于同一周。第一个表达式返回 0,因为当 start_of_week 为 'sunday' 时,9 月 22(星期日)和 9 月 24(星期二)属于同一周。

DATENAME

DATENAME(date_part, date, [start_of_week])

以字符串的形式返回 datedate_partstart_of_week 参数(可用于指定哪一天是一周的第一天)是可选的。可能的值为“monday”、“tuesday”等。如果忽略 start_of_week,则一周的开始由数据源确定。请参见数据源的日期属性

支持 ISO 8601 日期。

示例:

DATENAME('year', #2004-04-15#) = "2004"
DATENAME('month', #2004-04-15#) = "April"

DATEPART

DATEPART(date_part, date, [start_of_week])

以整数的形式返回 datedate_part

start_of_week 参数(可用于指定哪一天是一周的第一天)是可选的。可能的值为“monday”、“tuesday”等。如果忽略 start_of_week,则一周的开始由数据源确定。请参见数据源的日期属性

注意: 当 date_part 为工作日时,会忽略 start_of_week 参数。这是因为 Tableau 依赖固定工作日顺序来应用偏移。

支持 ISO 8601 日期。

示例:

DATEPART('year', #2004-04-15#) = 2004
DATEPART('month', #2004-04-15#) = 4

DATETRUNC

DATETRUNC(date_part, date, [start_of_week])

按 date_part 指定的准确度截断指定日期。此函数返回新日期。例如,以月份级别截断处于月份中间的日期时,此函数返回当月的第一天。start_of_week 参数(可用于指定哪一天是一周的第一天)是可选的。可能的值为“monday”、“tuesday”等。如果忽略 start_of_week,则一周的开始由数据源确定。请参见数据源的日期属性

支持 ISO 8601 日期。

示例:

DATETRUNC('quarter', #2004-08-15#) = 2004-07-01 12:00:00 AM
DATETRUNC('month', #2004-04-15#) = 2004-04-01 12:00:00 AM

DAY

DAY(date)

以整数的形式返回给定日期的天。

示例:

DAY(#2004-04-12#) = 12

ISDATE

ISDATE(string)

如果给定字符串为有效日期,则返回 true。

示例:

ISDATE("April 15, 2004") = true

MAKEDATE

MAKEDATE(year, month, day)

返回一个依据指定年份、月份和日期构造的日期值。

可用于 Tableau 数据提取。检查在其他数据源中的可用性。

示例:

MAKEDATE(2004, 4, 15) = #April 15, 2004#

MAKEDATETIME

MAKEDATETIME(date, time)

返回合并了 date 和 time 的 datetime。日期可以是 date、datetime 或 string 类型。时间必须是 datetime。

注意:此函数仅适用于与 MySQL 兼容的连接(对于 Tableau 为 MySQL 和 Amazon Aurora)。

示例:

MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM#
MAKEDATETIME([Date], [Time]) = #1/1/2001 6:00:00 AM#

MAKETIME

MAKETIME(hour, minute, second)

返回一个依据指定小时、分钟和秒构造的日期值。

可用于 Tableau 数据提取。检查在其他数据源中的可用性。

示例:

MAKETIME(14, 52, 40) = #14:52:40#

MAX

MAX(expression) or MAX(expr1, expr2)

通常应用于数字,不过也适用于日期。返回 ab 中的较大值(ab 必须为相同类型)。如果任一参数为 Null,则返回 Null

示例:

MAX(#2004-01-01# ,#2004-03-01#) = 2004-03-01 12:00:00 AM
MAX([ShipDate1], [ShipDate2])

MIN

MIN(expression) or MIN(expr1, expr2)

通常应用于数字,不过也适用于日期。返回 ab 中的较小值(ab 必须为相同类型)。如果任一参数为 Null,则返回 Null

示例:

MIN(#2004-01-01# ,#2004-03-01#) = 2004-01-01 12:00:00 AM
MIN([ShipDate1], [ShipDate2])

MONTH

MONTH(date)

以整数的形式返回给定日期的月份。

示例:

MONTH(#2004-04-15#) = 4

NOW

NOW( )

返回当前日期和时间。

返回值因连接的特性而异:

  • 对于实时、未发布的连接,NOW 返回数据源服务器时间。

  • 对于实时、已发布的连接,NOW 返回数据源服务器时间。

  • 对于未发布的数据提取,NOW 返回本地系统时间。

  • 对于发布的数据提取,NOW 返回 Tableau Server 数据引擎的本地时间。如果在不同时区中有多台工作计算机,这可能会产生不一致的结果。

示例:

NOW( ) = 2004-04-15 1:08:21 PM

TODAY

TODAY( )

返回当前日期。

示例:

TODAY( ) = 2004-04-15

YEAR

YEAR (date)

以整数的形式返回给定日期的年份。

示例:

YEAR(#2004-04-15#) = 2004


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,每周始终从星期一开始

有关设置日期函数格式的详细信息,请参见总览:计算语法表“文本表达式”部分。

注意:日期函数不考虑配置的会计年度开始。有关详细信息,请参见会计日期

另请参见

会计日期

日期和时间

数据源的日期属性

自定义日期

自定义日期格式

Tableau 函数(按字母顺序)

Tableau 函数(按类别)

在 Tableau 中设置计算的格式

Tableau 中的函数

感谢您提供反馈! 提交反馈时出错。请重试或向我们发送消息