本文根据 Tableau Public 上Ken Flerlage的Date Calculation Cheat Sheet进行整理翻译,基本涵盖了常用的 Tableau 日期计算。 地址:https://public.tableau.com/app/profile/ken.flerlage/viz/DateCalculationCheatSheet/Intro
1. 当前周的第一天
原字段名
Week – Current – First Day
基准日期
2026-01-26
计算结果
2026-01-25
公式
// 1) 截断到周的第一天
// 2) 转换为日期
DATE(
DATETRUNC('week', [基准日期])
) 2. 当前周的最后一天
原字段名
基准日期
2026-01-26
计算结果
2026-01-31
公式
// 1) 截断到周的第一天
// 2) 添加1周。
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('week', 1,
DATETRUNC('week', [基准日期])
)
)
) 3. 下周的第一天
原字段名
基准日期
2026-01-26
计算结果
2026-02-01
公式
// 1) 添加1周
// 2) 截断到周的第一天
// 3) 转换为日期
DATE(
DATETRUNC('week',
DATEADD('week', 1, [基准日期])
)
) 4. 下周的最后一天
原字段名
基准日期
2026-01-26
计算结果
2026-02-07
公式
// 1) 截断到周的第一天
// 2) 添加2周
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('week', 2,
DATETRUNC('week', [基准日期])
)
)
) 5. 上一周的第一天
原字段名
基准日期
2026-01-26
计算结果
2026-01-18
公式
// 1) 减去1周
// 2) 截断到周的第一天
// 3) 转换为日期
DATE(
DATETRUNC('week',
DATEADD('week', -1, [基准日期])
)
) 6. 上一周的最后一天
原字段名
基准日期
2026-01-26
计算结果
2026-01-24
公式
// 1) 截断到周的第一天。
// 2) 减去1天
// 3) 转换为日期
DATE(
DATEADD('day', -1,
DATETRUNC('week', [基准日期])
)
) 7. 当前月的第一天
原字段名
基准日期
2026-01-26
计算结果
2026-01-01
公式
// 1) 截断到月的第一天
// 2) 转换为日期
DATE(
DATETRUNC('month', [基准日期])
) 8. 当前月的最后一天
原字段名
基准日期
2026-01-26
计算结果
2026-01-31
公式
// 1) 截断到月的第一天
// 2) 添加1个月
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', [基准日期])
)
)
) 9. 下个月的第一天
原字段名
基准日期
2026-01-26
计算结果
2026-02-01
公式
// 1) 截断到月的第一天
// 2) 添加1个月
// 3) 转换为日期
DATE(
DATEADD('month', 1,
DATETRUNC('month', [基准日期])
)
) 10. 下个月的最后一天
原字段名
基准日期
2026-01-26
计算结果
2026-02-28
公式
// 1) 截断到月的第一天
// 2) 添加2个月
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('month', 2,
DATETRUNC('month', [基准日期])
)
)
) 11. 上个月的第一天
原字段名
基准日期
2026-01-26
计算结果
2025-12-01
公式
// 1) 截断到月的第一天
// 2) 减去1个月
// 3) 转换为日期
DATE(
DATEADD('month', -1,
DATETRUNC('month', [基准日期])
)
) 12. 上个月的最后一天
原字段名
基准日期
2026-01-26
计算结果
2025-12-31
公式
// 1) 截断到月的第一天
// 2) 减去1天
// 3) 转换为日期
DATE(
DATEADD('day', -1,
DATETRUNC('month', [基准日期])
)
) 13. 当前季度的第一天
原字段名
基准日期
2026-01-26
计算结果
2026-01-01
公式
// 1) 截断到季度的第一天
// 2) 转换为日期
DATE(
DATETRUNC('quarter', [基准日期])
) 14. 当前季度的最后一天
原字段名
基准日期
2026-01-26
计算结果
2026-03-31
公式
// 1) 截断到季度的第一天。
// 2) 添加1个季度
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('quarter', 1,
DATETRUNC('quarter', [基准日期])
)
)
) 15. 下一季度的第一天
原字段名
基准日期
2026-01-26
计算结果
2026-04-01
公式
// 1) 截断到季度的第一天
// 2) 添加1个季度
// 3) 转换为日期
DATE(
DATEADD('quarter', 1,
DATETRUNC('quarter', [基准日期])
)
) 16. 下一季度的最后一天
原字段名
基准日期
2026-01-26
计算结果
2026-06-30
公式
// 1) 截断到季度的第一天
// 2) 添加2个季度
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('quarter', 2,
DATETRUNC('quarter', [基准日期])
)
)
) 17. 上一季度的第一天
原字段名
基准日期
2026-01-26
计算结果
2025-10-01
公式
// 1) 截断到季度的第一天
// 2) 减去1个季度
// 3) 转换为日期
DATE(
DATEADD('quarter', -1,
DATETRUNC('quarter', [基准日期])
)
) 18. 上一季度的最后一天
原字段名
基准日期
2026-01-26
计算结果
2025-12-31
公式
// 1) 截断到季度的第一天
// 2) 减去1天
// 3) 转换为日期
DATE(
DATEADD('day', -1,
DATETRUNC('quarter', [基准日期])
)
) 19. 当前年的第一天
原字段名
基准日期
2026-01-26
计算结果
2026-01-01
公式
// 1) 截断到年的第一天
// 2) 转换为日期
DATE(
DATETRUNC('year', [基准日期])
) 20. 当前年的最后一天
原字段名
基准日期
2026-01-26
计算结果
2026-12-31
公式
// 1) 截断到年的第一天
// 2) 添加1年
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('year', 1,
DATETRUNC('year', [基准日期])
)
)
) 21. 下一年的第一天
原字段名
基准日期
2026-01-26
计算结果
2027-01-01
公式
// 1) 截断到年的第一天
// 2) 添加1年
// 3) 转换为日期
DATE(
DATEADD('year', 1,
DATETRUNC('year', [基准日期])
)
) 22. 下一年的最后一天
原字段名
基准日期
2026-01-26
计算结果
2027-12-31
公式
// 1) 截断到年的第一天
// 2) 添加2年
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('year', 2,
DATETRUNC('year', [基准日期])
)
)
) 23. 上一年的第一天
原字段名
基准日期
2026-01-26
计算结果
2025-01-01
公式
// 1) 截断到年的第一天
// 2) 减去1年
// 3) 转换为日期
DATE(
DATEADD('year', -1,
DATETRUNC('year', [基准日期])
)
) 24. 上一年的最后一天
原字段名
基准日期
2026-01-26
计算结果
2025-12-31
公式
// 1) 截断到年的第一天
// 2) 减去1天
// 3) 转换为日期
DATE(
DATEADD('day', -1,
DATETRUNC('year', [基准日期])
)
) 25. 当前月的天数
原字段名
基准日期
2026-01-26
计算结果
31
公式
// 获取当前月的最后一天,然后获取日期。
// DAY()内的公式与[Month - Current - Last Day]相同
DAY(
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', [基准日期])
)
)
) 26. 下个月的天数
原字段名
基准日期
2026-01-26
计算结果
28
公式
// 获取当前月的最后一天,然后获取日期。
// DAY()内的公式与[Month - Next - Last Day]相同
DAY(
DATEADD('day', -1,
DATEADD('month', 2,
DATETRUNC('month', [基准日期])
)
)
) 27. 上个月的天数
原字段名
基准日期
2026-01-26
计算结果
31
公式
// 获取当前月的最后一天,然后获取日期。
// DAY()内的公式与[Month - Previous - Last Day]相同
DAY(
DATEADD('day', -1,
DATETRUNC('month', [基准日期])
)
) 28. 当前季度的天数
原字段名
基准日期
2026-01-26
计算结果
90
公式
// 查找当前季度第一天和最后一天之间的差值。
// 公式与[Quarter - Current - First Day]和[Quarter - Current - Last Day]相同
DATEDIFF('day',
DATETRUNC('quarter', [基准日期]),
DATEADD('day', -1, DATEADD('quarter', 1, DATETRUNC('quarter', [基准日期])))
)+1 29. 下一季度的天数
原字段名
基准日期
2026-01-26
计算结果
91
公式
// 查找下一季度第一天和最后一天之间的差值。
// 公式与[Quarter - Next - First Day]和[Quarter - Next - Last Day]相同
DATEDIFF('day',
DATETRUNC('quarter', DATEADD('quarter', 1, [基准日期])),
DATEADD('day', -1, DATEADD('quarter', 2, DATETRUNC('quarter', [基准日期])))
)+1 30. 上一季度的天数
原字段名
基准日期
2026-01-26
计算结果
92
公式
// 查找上一季度第一天和最后一天之间的差值。
// 公式与[Quarter - Previous - First Day]和[Quarter - Previous - Last Day]相同
DATEDIFF('day',
DATETRUNC('quarter', DATEADD('quarter', -1, [基准日期])),
DATEADD('day', -1, DATETRUNC('quarter', [基准日期]))
)+1 31. 当前年的天数
原字段名
基准日期
2026-01-26
计算结果
365
公式
// 获取当前年的最后一天,然后获取日期。
// DATEPART()内的公式与[Year - Current - Last Day]相同
DATEPART('dayofyear',
DATEADD('day', -1,
DATEADD('year', 1,
DATETRUNC('year', [基准日期])
)
)
) 32. 下一年的天数
原字段名
基准日期
2026-01-26
计算结果
365
公式
// 获取下一年的最后一天,然后获取日期。
// DATEPART()内的公式与[Year - Next - Last Day]相同
DATEPART('dayofyear',
DATEADD('day', -1,
DATEADD('year', 2,
DATETRUNC('year', [基准日期])
)
)
) 33. 上一年的天数
原字段名
基准日期
2026-01-26
计算结果
365
公式
// 获取当前年的最后一天,然后获取日期。
// DATEPART()内的公式与[Year - Previous - Last Day]相同
DATEPART('dayofyear',
DATEADD('day', -1,
DATETRUNC('year', [基准日期])
)
) 34. 当前月的工作日数量
原字段名
基准日期
2026-01-26
计算结果
22
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Month - Current - Fist Weekday], [Month - Current - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Month - Current - Fist Weekday], [Month - Current - Last Weekday]) 35. 下个月的工作日数量
原字段名
基准日期
2026-01-26
计算结果
20
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Month - Next - Fist Weekday], [Month - Next - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Month - Next - Fist Weekday], [Month - Next - Last Weekday]) 36. 上个月的工作日数量
原字段名
基准日期
2026-01-26
计算结果
23
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Month - Previous - Fist Weekday], [Month - Previous - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Month - Previous - Fist Weekday], [Month - Previous - Last Weekday]) 37. 当前季度的工作日数量
原字段名
基准日期
2026-01-26
计算结果
64
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Quarter - Current - Fist Weekday], [Quarter - Current - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Quarter - Current - Fist Weekday], [Quarter - Current - Last Weekday]) 38. 下一季度的工作日数量
原字段名
基准日期
2026-01-26
计算结果
65
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Quarter - Next - Fist Weekday], [Quarter - Next - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Quarter - Next - Fist Weekday], [Quarter - Next - Last Weekday]) 39. 上一季度的工作日数量
原字段名
基准日期
2026-01-26
计算结果
66
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Quarter - Previous - Fist Weekday], [Quarter - Previous - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Quarter - Previous - Fist Weekday], [Quarter - Previous - Last Weekday]) 40. 当前年的工作日数量
原字段名
基准日期
2026-01-26
计算结果
261
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Year - Current - Fist Weekday], [Year - Current - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Year - Current - Fist Weekday], [Year - Current - Last Weekday]) 41. 下一年的工作日数量
原字段名
基准日期
2026-01-26
计算结果
261
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Year - Next - Fist Weekday], [Year - Next - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Year - Next - Fist Weekday], [Year - Next - Last Weekday]) 42. 上一年的工作日数量
原字段名
基准日期
2026-01-26
计算结果
261
公式
// 计算两周之间工作日的公式。
// 使用将开始和结束日期移至工作日的计算字段。
// https://kb.tableau.com/articles/howto/calculating-the-number-of-business-days-in-a-month
DATEDIFF('day', [Year - Previous - Fist Weekday], [Year - Previous - Last Weekday]) + 1
- 2 * DATEDIFF('week', [Year - Previous - Fist Weekday], [Year - Previous - Last Weekday]) 43. 当月的最后一个特定日(例如:星期日,星期一)
原字段名
基准日期
2026-01-26
计算结果
2026-01-25
公式
// 我们将从当月的最后一天开始。
// 然后我们将添加天数以到达指定的星期几。
[Month - Current - Last Day]
-
IF [Last Day - Helper Calc 1] = [Parameters].[Day of Week] THEN
// 第一天是正确的工作日,因此无需添加天数。
0
ELSEIF [Parameters].[Day of Week] > [Last Day - Helper Calc 1] THEN
// 我们需要的日期在第一天之后。
7-[Parameters].[Day of Week]+[Last Day - Helper Calc 1]
ELSE
// 我们需要的日期在第一天之前。
[Last Day - Helper Calc 1]-[Parameters].[Day of Week]
END 44. 当月的第N个特定日(例如:星期日,星期一)
原字段名
基准日期
2026-01-26
计算结果
2026-01-04
公式
// 如果选择了第5周,第n天可能在下个月。
// 如果是这种情况,将值设为null。
IF DATETRUNC('month', [Nth Day - Helper Calc 2]) <> DATETRUNC('month', [Month - Current - First Day]) THEN
NULL
ELSE
[Nth Day - Helper Calc 2]
END 45. 当前日期的世纪
原字段名
基准日期
2026-01-26
计算结果
2000
公式
// 截断到世纪。
INT(YEAR([基准日期])/100)*100 46. 当前日期的十年
原字段名
基准日期
2026-01-26
计算结果
2020
公式
// 截断到十年。
INT(YEAR([基准日期])/10)*10 📖 相关文章
● 使用Tableau参数操作传递多个值
● 如何提取Tableau打包工作簿中的自定义图形和数据集
● 在Tableau中通过添加操作,控制集并高亮显示数据
● 一文搞懂Tableau中的符号、形状、图片与图像角色
● 用Tableau制作百分比条形图(三种方法)
——————————————————————————————
No comments yet