SqlServer取得一個月的所有有日期


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                                                                                            
)    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM