Tableau日期计算合集

本文根据 Tableau Public 上Ken Flerlage的Date Calculation Cheat Sheet进行整理翻译,基本涵盖了常用的 Tableau 日期计算。 地址: 当前周的…

本文根据 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