標籤:style blog http color 資料 io 2014 art
SqlServer的自訂函數可以分為三類但我只用過上面兩類,可以稱作純量涵式和資料表值函式,區別只是返回資料的類型,資料表值函式返回的是一個虛擬表
SqlServer的函數在這裡
因某種需求我寫了一個這樣的函數:輸入時開始日期和結束日期,輸出是一個表,從開日期到結束日期內的所有日期
比如我輸入時20140701,20140708,輸出是這樣的
代碼如下,歡迎指正
CEATE FUNCTION [dbo].[fn_GetDays](@startdate DATE,@enddate DATE) RETURNS TABLE AS RETURN( SELECT DATEADD(day,number,@startdate) AS days FROM master..spt_values WHERE TYPE = ‘P‘ AND DATEADD(DAY,number,@startdate) <= @enddate )
代碼解釋:
如下語句是從SqlServerMaster表中取得連續的數值,如下代碼能取到1~2047的連續數值
SELECT number FROM master..spt_values WHERE TYPE = ‘P‘
這句是SqlServer系統函數,不多說
DATEADD(DAY,number,@startdate)
下面是 另一個函數邏輯和上面的很類似,作用是取十分鐘位單位的時間
CREATE FUNCTION [dbo].[fn_GetTenMis](@startDatetime DATETIME,@endtDateime DATETIME) RETURNS TABLE AS RETURN( select DATEADD(MI,number*10,@startDatetime) AS TenMis from master..spt_values where type = ‘P‘ and DATEADD(MI,number*10,@startDatetime) <= @endtDateime )