当前位置: 移动技术网 > IT编程>数据库>MSSQL > 获取指定日期所在月份的第一天

获取指定日期所在月份的第一天

2019年05月10日  | 移动技术网IT编程  | 我要评论

长春理工教务管理,连云港核废料抗议,庭院怨妇

实现这个功能,先参考下面几篇博文《t-sql获取二月份天数

如何获取月份的天数

获取指定日期所在月份的第一天


可以写一个table-valued functions:

 

 

set ansi_nulls on
go
set quoted_identifier on
go

-- =============================================
-- author:      insus.net
-- create date: 2019-05-09
-- update date: 2019-05-09
-- description: 获取指定月份所有日期
-- =============================================

create function [dbo].[tvf_daysofmonth]
(
    @inputdate datetime
)
returns @dump table
(
    [date] datetime
)
as
begin    
   declare @firstdayofmonth datetime = dateadd(month,datediff(month,0,@inputdate),0) --获取所在月份第一天日期

    declare @daysofmonth int =  day(dateadd(day,-1, dateadd(month,1,@firstdayofmonth)))  --获取所在月份的天数

    insert into @dump ([date]) values(@firstdayofmonth) --把第一天插入表中。

    declare @d int = 1
    while @d < @daysofmonth
    begin
        insert into @dump ([date]) values(@firstdayofmonth + @d)
        set @d = @d + 1
    end
    return
end

 

例子说明:

 

如果想更多的写法参考, insus.net更改了上面的自定义函数,先是获取指定日期所在月份的第一天日期,然后获取指定日期下一个月份的第一天日期。

 

set ansi_nulls on
go
set quoted_identifier on
go

-- =============================================
-- author:      insus.net
-- create date: 2019-05-09
-- update date: 2019-05-09
-- description: 获取指定月份所有日期
-- =============================================

create function [dbo].[tvf_daysofmonth]
(
    @inputdate datetime
)
returns @dump table
(
    [date] datetime
)
as
begin    
   declare @firstdayofmonth datetime = dateadd(month,datediff(month,0,@inputdate),0) --获取指定月份第一天日期
   declare @firstdayofnexmonth datetime = dateadd(month,1,@firstdayofmonth) --获取指定月份下一个月份的第一天日期

    declare @dumpdate datetime = @firstdayofmonth

    while (@dumpdate < @firstdayofnexmonth)
    begin        
        insert into @dump ([date]) values(@dumpdate)        
        set @dumpdate = @dumpdate + 1
    end    
    return
end

 

上面2个自定义函数均可以使用。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网