我想知道你当前约会时的哪一天。
例如,如果我给出01/25/2012,那么输出应为25.因为它是本季度的第25天。
同样,如果我给02/01/2012它应该给出32作为输出。
我能够获得本季度的第一天,但无法确定该季度的哪一天。
平台是Teradata。日历没有day_of_quarter的选项,这正是我要找的。鉴于日期,我需要知道该季度的天数。
请帮忙。提前谢谢。
答案 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中,或将其作为列添加到现有日历表中。