本文根据 Tableau Public 上Ken Flerlage的Date Calculation Cheat Sheet进行整理翻译,基本涵盖了常用的 Tableau 日期计算。
地址:https://public.tableau.com/app/profile/ken.flerlage/viz/DateCalculationCheatSheet/Intro

- 当前周的第一天
- 当前周的最后一天
- 下周的第一天
- 下周的最后一天
- 上一周的第一天
- 上一周的最后一天
- 当前月的第一天
- 当前月的最后一天
- 下个月的第一天
- 下个月的最后一天
- 上个月的第一天
- 上个月的最后一天
- 当前季度的第一天
- 当前季度的最后一天
- 下一季度的第一天
- 下一季度的最后一天
- 上一季度的第一天
- 上一季度的最后一天
- 当前年的第一天
- 当前年的最后一天
- 下一年的第一天
- 下一年的最后一天
- 上一年的第一天
- 上一年的最后一天
- 当前月的天数
- 下个月的天数
- 上个月的天数
- 当前季度的天数
- 下一季度的天数
- 上一季度的天数
- 当前年的天数
- 下一年的天数
- 上一年的天数
- 当前月的工作日数量
- 下个月的工作日数量
- 上个月的工作日数量
- 当前季度的工作日数量
- 下一季度的工作日数量
- 上一季度的工作日数量
- 当前年的工作日数量
- 下一年的工作日数量
- 上一年的工作日数量
- 当月的最后一个特定日(例如:星期日,星期一)
- 当月的第N个特定日(例如:星期日,星期一)
- 当前日期的世纪
- 当前日期的十年
1. 当前周的第一天
原字段名
Week – Current – First Day
基准日期
2026-01-26
计算结果
2026-01-25
公式
// 1) 截断到周的第一天
// 2) 转换为日期
DATE(
DATETRUNC('week', [基准日期])
)
2. 当前周的最后一天
原字段名
Week – Current – Last Day
基准日期
2026-01-26
计算结果
2026-01-31
公式
// 1) 截断到周的第一天
// 2) 添加1周。
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('week', 1,
DATETRUNC('week', [基准日期])
)
)
)
3. 下周的第一天
原字段名
Week – Next – First Day
基准日期
2026-01-26
计算结果
2026-02-01
公式
// 1) 添加1周
// 2) 截断到周的第一天
// 3) 转换为日期
DATE(
DATETRUNC('week',
DATEADD('week', 1, [基准日期])
)
)
4. 下周的最后一天
原字段名
Week – Next – Last Day
基准日期
2026-01-26
计算结果
2026-02-07
公式
// 1) 截断到周的第一天
// 2) 添加2周
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('week', 2,
DATETRUNC('week', [基准日期])
)
)
)
5. 上一周的第一天
原字段名
Week – Previous – First Day
基准日期
2026-01-26
计算结果
2026-01-18
公式
// 1) 减去1周
// 2) 截断到周的第一天
// 3) 转换为日期
DATE(
DATETRUNC('week',
DATEADD('week', -1, [基准日期])
)
)
6. 上一周的最后一天
原字段名
Week – Previous – Last Day
基准日期
2026-01-26
计算结果
2026-01-24
公式
// 1) 截断到周的第一天。
// 2) 减去1天
// 3) 转换为日期
DATE(
DATEADD('day', -1,
DATETRUNC('week', [基准日期])
)
)
7. 当前月的第一天
原字段名
Month – Current – First Day
基准日期
2026-01-26
计算结果
2026-01-01
公式
// 1) 截断到月的第一天
// 2) 转换为日期
DATE(
DATETRUNC('month', [基准日期])
)
8. 当前月的最后一天
原字段名
Month – Current – Last Day
基准日期
2026-01-26
计算结果
2026-01-31
公式
// 1) 截断到月的第一天
// 2) 添加1个月
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', [基准日期])
)
)
)
9. 下个月的第一天
原字段名
Month – Next – First Day
基准日期
2026-01-26
计算结果
2026-02-01
公式
// 1) 截断到月的第一天
// 2) 添加1个月
// 3) 转换为日期
DATE(
DATEADD('month', 1,
DATETRUNC('month', [基准日期])
)
)
10. 下个月的最后一天
原字段名
Month – Next – Last Day
基准日期
2026-01-26
计算结果
2026-02-28
公式
// 1) 截断到月的第一天
// 2) 添加2个月
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('month', 2,
DATETRUNC('month', [基准日期])
)
)
)
11. 上个月的第一天
原字段名
Month – Previous – First Day
基准日期
2026-01-26
计算结果
2025-12-01
公式
// 1) 截断到月的第一天
// 2) 减去1个月
// 3) 转换为日期
DATE(
DATEADD('month', -1,
DATETRUNC('month', [基准日期])
)
)
12. 上个月的最后一天
原字段名
Month – Previous – Last Day
基准日期
2026-01-26
计算结果
2025-12-31
公式
// 1) 截断到月的第一天
// 2) 减去1天
// 3) 转换为日期
DATE(
DATEADD('day', -1,
DATETRUNC('month', [基准日期])
)
)
13. 当前季度的第一天
原字段名
Quarter – Current – First Day
基准日期
2026-01-26
计算结果
2026-01-01
公式
// 1) 截断到季度的第一天
// 2) 转换为日期
DATE(
DATETRUNC('quarter', [基准日期])
)
14. 当前季度的最后一天
原字段名
Quarter – Current – Last Day
基准日期
2026-01-26
计算结果
2026-03-31
公式
// 1) 截断到季度的第一天。
// 2) 添加1个季度
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('quarter', 1,
DATETRUNC('quarter', [基准日期])
)
)
)
15. 下一季度的第一天
原字段名
Quarter – Next – First Day
基准日期
2026-01-26
计算结果
2026-04-01
公式
// 1) 截断到季度的第一天
// 2) 添加1个季度
// 3) 转换为日期
DATE(
DATEADD('quarter', 1,
DATETRUNC('quarter', [基准日期])
)
)
16. 下一季度的最后一天
原字段名
Quarter – Next – Last Day
基准日期
2026-01-26
计算结果
2026-06-30
公式
// 1) 截断到季度的第一天
// 2) 添加2个季度
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('quarter', 2,
DATETRUNC('quarter', [基准日期])
)
)
)
17. 上一季度的第一天
原字段名
Quarter – Previous – First Day
基准日期
2026-01-26
计算结果
2025-10-01
公式
// 1) 截断到季度的第一天
// 2) 减去1个季度
// 3) 转换为日期
DATE(
DATEADD('quarter', -1,
DATETRUNC('quarter', [基准日期])
)
)
18. 上一季度的最后一天
原字段名
Quarter – Previous – Last Day
基准日期
2026-01-26
计算结果
2025-12-31
公式
// 1) 截断到季度的第一天
// 2) 减去1天
// 3) 转换为日期
DATE(
DATEADD('day', -1,
DATETRUNC('quarter', [基准日期])
)
)
19. 当前年的第一天
原字段名
Year – Current – First Day
基准日期
2026-01-26
计算结果
2026-01-01
公式
// 1) 截断到年的第一天
// 2) 转换为日期
DATE(
DATETRUNC('year', [基准日期])
)
20. 当前年的最后一天
原字段名
Year – Current – Last Day
基准日期
2026-01-26
计算结果
2026-12-31
公式
// 1) 截断到年的第一天
// 2) 添加1年
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('year', 1,
DATETRUNC('year', [基准日期])
)
)
)
21. 下一年的第一天
原字段名
Year – Next – First Day
基准日期
2026-01-26
计算结果
2027-01-01
公式
// 1) 截断到年的第一天
// 2) 添加1年
// 3) 转换为日期
DATE(
DATEADD('year', 1,
DATETRUNC('year', [基准日期])
)
)
22. 下一年的最后一天
原字段名
Year – Next – Last Day
基准日期
2026-01-26
计算结果
2027-12-31
公式
// 1) 截断到年的第一天
// 2) 添加2年
// 3) 减去1天
// 4) 转换为日期
DATE(
DATEADD('day', -1,
DATEADD('year', 2,
DATETRUNC('year', [基准日期])
)
)
)
23. 上一年的第一天
原字段名
Year – Previous – First Day
基准日期
2026-01-26
计算结果
2025-01-01
公式
// 1) 截断到年的第一天
// 2) 减去1年
// 3) 转换为日期
DATE(
DATEADD('year', -1,
DATETRUNC('year', [基准日期])
)
)
24. 上一年的最后一天
原字段名
Year – Previous – Last Day
基准日期
2026-01-26
计算结果
2025-12-31
公式
// 1) 截断到年的第一天
// 2) 减去1天
// 3) 转换为日期
DATE(
DATEADD('day', -1,
DATETRUNC('year', [基准日期])
)
)
25. 当前月的天数
原字段名
Month – Current – Number of Days
基准日期
2026-01-26
计算结果
31
公式
// 获取当前月的最后一天,然后获取日期。
// DAY()内的公式与[Month - Current - Last Day]相同
DAY(
DATEADD('day', -1,
DATEADD('month', 1,
DATETRUNC('month', [基准日期])
)
)
)
26. 下个月的天数
原字段名
Month – Next – Number of Days
基准日期
2026-01-26
计算结果
28
公式
// 获取当前月的最后一天,然后获取日期。
// DAY()内的公式与[Month - Next - Last Day]相同
DAY(
DATEADD('day', -1,
DATEADD('month', 2,
DATETRUNC('month', [基准日期])
)
)
)
27. 上个月的天数
原字段名
Month – Previous – Number of Days
基准日期
2026-01-26
计算结果
31
公式
// 获取当前月的最后一天,然后获取日期。
// DAY()内的公式与[Month - Previous - Last Day]相同
DAY(
DATEADD('day', -1,
DATETRUNC('month', [基准日期])
)
)
28. 当前季度的天数
原字段名
Quarter – Current – Number of Days
基准日期
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. 下一季度的天数
原字段名
Quarter – Next – Number of Days
基准日期
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. 上一季度的天数
原字段名
Quarter – Previous – Number of Days
基准日期
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. 当前年的天数
原字段名
Year – Current – Number of Days
基准日期
2026-01-26
计算结果
365
公式
// 获取当前年的最后一天,然后获取日期。
// DATEPART()内的公式与[Year - Current - Last Day]相同
DATEPART('dayofyear',
DATEADD('day', -1,
DATEADD('year', 1,
DATETRUNC('year', [基准日期])
)
)
)
32. 下一年的天数
原字段名
Year – Next – Number of Days
基准日期
2026-01-26
计算结果
365
公式
// 获取下一年的最后一天,然后获取日期。
// DATEPART()内的公式与[Year - Next - Last Day]相同
DATEPART('dayofyear',
DATEADD('day', -1,
DATEADD('year', 2,
DATETRUNC('year', [基准日期])
)
)
)
33. 上一年的天数
原字段名
Year – Previous – Number of Days
基准日期
2026-01-26
计算结果
365
公式
// 获取当前年的最后一天,然后获取日期。
// DATEPART()内的公式与[Year - Previous - Last Day]相同
DATEPART('dayofyear',
DATEADD('day', -1,
DATETRUNC('year', [基准日期])
)
)
34. 当前月的工作日数量
原字段名
Month – Current – Number of Weekdays
基准日期
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. 下个月的工作日数量
原字段名
Month – Next – Number of Weekdays
基准日期
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. 上个月的工作日数量
原字段名
Month – Previous – Number of Weekdays
基准日期
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. 当前季度的工作日数量
原字段名
Quarter – Current – Number of Weekdays
基准日期
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. 下一季度的工作日数量
原字段名
Quarter – Next – Number of Weekdays
基准日期
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. 上一季度的工作日数量
原字段名
Quarter – Previous – Number of Weekdays
基准日期
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. 当前年的工作日数量
原字段名
Year – Current – Number of Weekdays
基准日期
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. 下一年的工作日数量
原字段名
Year – Next – Number of Weekdays
基准日期
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. 上一年的工作日数量
原字段名
Year – Previous – Number of Weekdays
基准日期
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. 当月的最后一个特定日(例如:星期日,星期一)
原字段名
Last Specific Day of Month
基准日期
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个特定日(例如:星期日,星期一)
原字段名
Nth Specific Day of Month
基准日期
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. 当前日期的世纪
原字段名
Century
基准日期
2026-01-26
计算结果
2000
公式
// 截断到世纪。
INT(YEAR([基准日期])/100)*100
46. 当前日期的十年
原字段名
Decade
基准日期
2026-01-26
计算结果
2020
公式
// 截断到十年。
INT(YEAR([基准日期])/10)*10
