我正在嘗試獲取當季日期中的哪一天。獲取季度中的天數Teradata
例如,如果我給2012年1月25日,那麼產量應該是25.因爲這是本季度的第25天。
同樣,如果我給02/01/2012它應該給32作爲輸出。
我能夠獲得本季度的第一天,但無法獲得本季度的哪一天。
平臺是Teradata。日曆沒有day_of_quarter的選項,這正是我正在尋找的。鑑於日期,我需要知道季度的一天。
請幫忙。先謝謝你。
我正在嘗試獲取當季日期中的哪一天。獲取季度中的天數Teradata
例如,如果我給2012年1月25日,那麼產量應該是25.因爲這是本季度的第25天。
同樣,如果我給02/01/2012它應該給32作爲輸出。
我能夠獲得本季度的第一天,但無法獲得本季度的哪一天。
平臺是Teradata。日曆沒有day_of_quarter的選項,這正是我正在尋找的。鑑於日期,我需要知道季度的一天。
請幫忙。先謝謝你。
TRUNC(datecol)
返回季度的第一天, date1 - date2
返回天之間的數字:
SELECT (datecol - TRUNC(datecol, 'Q')) + 1 AS day_of_quarter
你可以把這個計算到SQL UDF,或者爲一列添加到您現有的日曆表。
這是基於日曆季度。如果您有某種商業日曆,您可以調整案例陳述。
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
謝謝安德魯。但我期待用我的表中的日期替換calendar_date,它不適用於此。這是我想要做的: – TD123 2014-12-02 17:30:05
select \t CASE \t當MONTH(cast(DayDate as date)))1 and 3 then CAST(((cast(DayDate as date))/ 10000)* 10000)+ 101 AS (日(日期))/ 10000)+ 401 AS日期) 當月(鑄造(日期日期))日期(鑄造(日期日期))日期4和6之間鑄造(((鑄(日期日期)/ 10000) )7和9之間012(16)(日期日期))((日(鑄(日期日期))/ 10000)* 10000)+ 701日期)當月(日期日期)))10和12之間 THEN CAST(( (dateDate as date))/ 10000)* 10000)+ 1001 AS DATE)END as First_Day_Of_Quarter, DayDate- first_day_of_quarter + 1 as Day_Of_Quarter from LU_DayComplete – TD123 2014-12-02 17:31:38
我得到一個錯誤5407:日期時間和間隔時間無效操作 – TD123 2014-12-02 17:43:12
什麼版本的Teradata?這是標準日曆還是商業日曆季度? – 2014-12-02 14:24:47
This Teradata 14 – TD123 2014-12-02 17:14:12