首页 > 代码库 > SqlServer取得一个月的所有有日期

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                                                                                            )