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                                                                                            
)    

 

posted on 2014-07-26 12:06  零℃弥合  阅读(6223)  评论(0编辑  收藏  举报

导航