日期函数
- 版本 :2022.1 及更高版本
适用于: Tableau Desktop, Tableau Online, Tableau Public, Tableau Server
本文介绍 Tableau 中的日期函数及其用途。它还演示如何使用示例创建日期计算。
创建日期计算
按照下面的步骤进行操作以了解如何创建日期计算。
在 Tableau Desktop 中,连接到 Tableau 附带的“Sample - Superstore”已保存数据源。
导航到工作表。
从“数据”窗格中的“维度”下,将“Order Date”(订单日期)拖到“行”功能区。
在“行”功能区上,单击“YEAR(Order Date)”字段上的加号图标 (+)。
“QUARTER(Order Date)”将添加到“行”功能区,并且视图将更新。
在“行”功能区上,单击“QUARTER(Order Date)”字段上的加号图标 (+),以下钻到“MONTH(Order Date)”。
选择“分析”>“创建计算字段”。
在打开的计算编辑器中,执行以下操作:
将计算字段命名为“Quarter Date”(季度日期)。
输入以下公式:
DATETRUNC('quarter', [Order Date])
完成后,单击“确定”。
新的日期计算将出现在“数据”窗格中的“维度”下。就像其他字段一样,您可以在一个或多个可视化项中使用该字段。
从“数据”窗格中的“维度”下,将“Quarter Date”(季度日期)拖到“行”功能区,并将其放在“MONTH(Order Date)”右侧。
可视化项将更新为包含年份值。这是因为 Tableau 将日期数据累积到最高详细级别。
在“行”功能区上,右键单击“YEAR(Quarter Date)”,并选择“精确日期”。
在“行”功能区上,再次右键单击“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 周有一致的天数。
有关使用 ISO 8601 日期的详细信息,请参见ISO-8601 基于周的日历。
Tableau 中的可用日期函数
函数 | 语法 | 描述 |
DATEADD |
| 返回指定日期,该日期的指定 支持 ISO 8601 日期。 示例:
该表达式会向日期 |
DATEDIFF |
| 返回
支持 ISO 8601 日期。 示例:
第一个表达式返回 1,因为当 |
DATENAME |
| 以字符串的形式返回 支持 ISO 8601 日期。 示例:
|
DATEPARSE | DATEPARSE(date_format, [date_string]) | 返回 [date_string] 作为日期。 date_format 参数将描述 [字符串] 字段的排列方式。由于可通过各种方式对字符串字段进行排序,因此 date_format 必须完全匹配。有关完整解释,请参见将字段转换为日期字段。 示例:
注意:此函数可通过以下连接器获得:非旧版 Excel 和文本文件连接、Amazon EMR Hadoop Hive、Cloudera Hadoop、Google Sheets、Hortonworks Hadoop Hive、MapR Hadoop Hive、MySQL、Oracle、PostgreSQL 以及 Tableau 数据提取。有些格式可能并非适用于所有连接。 注意:Hive 变体不支持 DATEPARSE。仅支持 Denodo、Drill 和 Snowflake。 |
DATEPART |
| 以整数的形式返回
注意: 当 支持 ISO 8601 日期。 示例:
|
DATETRUNC |
| 按 date_part 指定的准确度截断指定日期。此函数返回新日期。例如,以月份级别截断处于月份中间的日期时,此函数返回当月的第一天。 支持 ISO 8601 日期。 示例:
|
DAY |
| 以整数的形式返回给定日期的天。 示例:
|
ISDATE |
| 如果给定字符串为有效日期,则返回 true。 示例:
|
MAKEDATE |
| 返回一个依据指定年份、月份和日期构造的日期值。 可用于 Tableau 数据提取。检查在其他数据源中的可用性。 示例:
|
MAKEDATETIME |
| 返回合并了 date 和 time 的 datetime。日期可以是 date、datetime 或 string 类型。时间必须是 datetime。 注意:此函数仅适用于与 MySQL 兼容的连接(对于 Tableau 为 MySQL 和 Amazon Aurora)。 示例:
|
MAKETIME |
| 返回一个依据指定小时、分钟和秒构造的日期值。 可用于 Tableau 数据提取。检查在其他数据源中的可用性。 示例:
|
MAX |
| 通常应用于数字,不过也适用于日期。返回 示例:
|
MIN |
| 通常应用于数字,不过也适用于日期。返回 示例:
|
MONTH |
| 以整数的形式返回给定日期的月份。 示例:
|
NOW |
| 返回当前本地系统日期和时间。 示例:
|
QUARTER | QUARTER ( ) | 以整数的形式返回给定日期的季度。 示例:
|
TODAY |
| 返回当前日期。 示例:
|
WEEK | WEEK( ) | 以整数的形式返回给定日期的周。 示例:
|
YEAR |
| 以整数的形式返回给定日期的年份。 示例:
|
ISOQUARTER | ISOQUARTER (date) | 以整数的形式返回给定日期的基于 ISO8601 周的季度。 示例:
|
ISOWEEK | ISOWEEK (date) | 以整数的形式返回给定日期基于 ISO8601 周的周。 示例:
|
ISOWEEKDAY | ISOWEEKDAY (date) | 以整数的形式返回给定日期基于 ISO8601 周的平日。 示例:
|
ISOYEAR | ISOYEAR (date) | 以整数的形式返回给定日期的基于 ISO8601 周的年。 示例:
|
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,每周始终从星期一开始 |
有关设置日期函数格式的详细信息,请参见总览:计算语法表“文本表达式”部分。
注意:日期函数不考虑配置的会计年度开始。有关详细信息,请参见会计日期。
注意: date_part
返回整数。 以下值是 date_part 接受的输入以及该输入的格式。