You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Teradata中通过Current_Date()获取上月第二、第四个周五日期

在Teradata中获取上月的第二个周五和第四个周五

实现方案

要基于Current_Date()获取上月的第二个和第四个周五,可通过Teradata内置日期函数组合实现,核心逻辑如下:

1. 确定上月第一天

先通过ADD_MONTHS回推一个月,再用TRUNC截断到当月月初,得到上月的起始日期:

TRUNC(ADD_MONTHS(Current_Date(), -1), 'MM')

2. 定位上月第一个周五

利用NEXT_DAY函数,传入上月第一天减1天和目标星期几('FRIDAY'),即可得到当月第一个周五(若上月第一天本身是周五,减1天后找下一个周五仍会返回当天,结果准确):

NEXT_DAY(TRUNC(ADD_MONTHS(Current_Date(), -1), 'MM') - 1, 'FRIDAY')

3. 推导目标日期

  • 第二个周五:第一个周五加7天
  • 第四个周五:第一个周五加21天(7×3)

完整SQL语句

获取上月第二个周五

SELECT
  NEXT_DAY(TRUNC(ADD_MONTHS(Current_Date(), -1), 'MM') - 1, 'FRIDAY') + INTERVAL '7' DAY AS second_friday_last_month;

获取上月第四个周五

SELECT
  NEXT_DAY(TRUNC(ADD_MONTHS(Current_Date(), -1), 'MM') - 1, 'FRIDAY') + INTERVAL '21' DAY AS fourth_friday_last_month;

示例验证

当Current_Date()为'2025-03-25'时:

  • 上月第一天是2025-02-01(周六),第一个周五为2025-02-07
  • 第二个周五:2025-02-07 + 7天 = 2025-02-14
  • 第四个周五:2025-02-07 + 21天 = 2025-02-28
    与示例结果完全匹配。

注意事项

  • NEXT_DAY的星期参数:Teradata默认支持英文全称(如'FRIDAY')或缩写(如'FRI'),中文环境可尝试传入'星期五',具体取决于数据库语言配置。
  • 日期加减:使用INTERVAL 'n' DAY比直接加数字更规范,可避免隐式转换问题。

内容的提问来源于stack exchange,提问作者darkage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 18:22:10