获得Teradata季度的天数

时间:2014-12-02 05:34:43

标签: teradata

我想知道你当前约会时的哪一天。

例如,如果我给出01/25/2012,那么输出应为25.因为它是本季度的第25天。

同样,如果我给02/01/2012它应该给出32作为输出。

我能够获得本季度的第一天,但​​无法确定该季度的哪一天。

平台是Teradata。日历没有day_of_quarter的选项,这正是我要找的。鉴于日期,我需要知道该季度的天数。

请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:1)

这是基于日历季度。如果您有某种业务日历,则可以调整案例陈述。

select
c.*,
CASE WHEN MONTH(calendar_date) BETWEEN 1 AND 3 
         THEN CAST(((calendar_date / 10000) * 10000) + 101 AS DATE) 
         WHEN MONTH(calendar_date) BETWEEN 4 AND 6 
         THEN CAST(((calendar_date / 10000) * 10000) + 401 AS DATE) 
         WHEN MONTH(calendar_date) BETWEEN 7 AND 9 
         THEN CAST(((calendar_date / 10000) * 10000) + 701 AS DATE) 
         WHEN MONTH(calendar_date) BETWEEN 10 AND 12 
         THEN CAST(((calendar_date / 10000) * 10000) + 1001 AS DATE) 
END as First_Day_Of_Quarter,
calendar_date - first_day_of_quarter + 1 as Day_Of_Quarter
from
sys_calendar.calendar c
where
year_of_calendar = 2014
order by 1 asc

答案 1 :(得分:1)

TRUNC(datecol)返回本季度的第一天, date1 - date2返回之间的天数:

SELECT (datecol - TRUNC(datecol, 'Q')) + 1 AS day_of_quarter

您可以将此计算放入SQL UDF中,或将其作为列添加到现有日历表中。