2014-12-04 84 views
1

我對代碼工作像這樣列出兩個給定日期之間的天

CREATE FUNCTION edw_devdb.test (StartDate Date, EndDate Date) 
    RETURNS DATE 
    LANGUAGE SQL 
    DETERMINISTIC 
    CONTAINS SQL 
    SPECIFIC test.myudf 
    CALLED ON NULL INPUT 
    SQL SECURITY DEFINER 
    COLLATION INVOKER 
    INLINE TYPE 1 
    RETURN 
SYS_CALENDAR.Calendar.calendar_date between StartDate and EndDate; 

我需要返回Teradata的兩個給定日期之間的日期列表中選擇一個功能。有人可以幫助我嗎?先謝謝你。

回答

1

裏面你不能在SQL UDF在Teradata的做到這一點。

爲什麼你需要這個函數列表?如果起始日期日期和結束日期是表中的列Teradata的擴大可以使用:

SELECT BEGIN(pd) 
FROM SYS_CALENDAR.CALENDAR -- your table here 
WHERE calendar_date = DATE 
EXPAND ON PERIOD(StartDate, EndDate + 1) AS p 

當然,你會使用自己的表,而不是SYS_CALENDAR.CALENDAR,這只是爲了獲得一個單行。

+0

謝謝你的幫助dnoeth! – TD123 2014-12-10 06:14:06

+0

這是哪裏的文檔? – elelias 2016-07-14 10:40:31

-1

使用這個邏輯你的函數

; WITH CTE as 
(
    SELECT CAST('01/jan/2014' AS DATE) as DATES //Use Fromdate as parameter instead of '01/jan/2014' 
    UNION ALL 
    SELECT DATEADD(DAY,1,DATES) 
    FROM CTE 
    WHERE DATES < cast('10/jan/2014' AS DATE) //Use Todate as parameter instead of '01/jan/2014' 
) 
SELECT DISTINCT DATES 
FROM CTE 
相關問題