【问题标题】:Teradata - Calculate the previous quarter date start date and end date from current dateTeradata - 从当前日期计算上一个季度日期的开始日期和结束日期
【发布时间】:2019-12-18 19:13:55
【问题描述】:

我在 Teradata 中的 current_date 是 2019 年 12 月 18 日

我必须从上面的 current_date 计算上一季度的开始日期和结束日期。

Input               =     '2019-12-18'
Output Start Date   =     '2019-07-01' 
Output End Date     =     '2019-09-30'

【问题讨论】:

  • 到目前为止你尝试过什么? SO 不是要求为您完成完整代码的地方。您需要尝试一下,如果您在尝试期间遇到任何具体问题,我们可以提供帮助

标签: teradata


【解决方案1】:

您应该可以使用TRUNC 函数来执行此操作,例如:

SELECT 
  TRUNC(ADD_MONTHS(CURRENT_DATE, -3), 'Q') AS Start_Quarter, -- Previous quarter start
  TRUNC(CURRENT_DATE, 'Q') - 1 AS End_Quarter -- Current quarter start date - 1 day

试一试,让我知道。这假定手册中的错误仍被视为“错误”。

另外,根据您使用的TD 版本,您可能能够使用内置函数:

SELECT 
  TD_QUARTER_BEGIN(CURRENT_DATE) AS Start_Quarter,
  TD_QUARTER_END(CURRENT_DATE) AS End_Quarter

Reference
TD Manual
Built-in functions

【讨论】:

  • 获取上一季度:Trunc(Add_Months(Current_Date, -3), 'Q') AS Start_Quarter, Trunc(Current_Date, 'Q') - 1 AS End_Quarter。但更重要的是:不要使用TD_QUARTER_BEGIN,因为它基于愚蠢的商业日历,除非您强制使用TD_QUARTER_BEGIN(CURRENT_DATE, 'TERADATA'),否则可能不会返回预期结果。它会在 1900 到 2100 年之外失败,而 TRUNC 适用于所有日期。
  • 糟糕,我忘了这是上一季度的。更新。谢谢迪特。
  • 非常感谢@ravioli,@dnoeth 的帮助!
  • 乐于助人:)
猜你喜欢
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 2019-08-07
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多