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                                                                                            
)    

 

SqlServer取得一个月的所有有日期,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。