欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mssql中获取指定日期所在月份的第一天的代码

程序员文章站 2023-12-15 12:53:04
获取指定日期月份的第一天,你可以使用dateadd函数,减去指定日期的月份过去了的天数,即可。 复制代码 代码如下: create function [dbo].[udf_...
获取指定日期月份的第一天,你可以使用dateadd函数,减去指定日期的月份过去了的天数,即可。
复制代码 代码如下:

create function [dbo].[udf_firstdayofmonth]
(
@date date
)
returns datetime
as
begin
return cast(dateadd(day,1 - day(@date), @date) as datetime)
end

或者,用datediff计算指定日期与日期开始之时,相隔几个月,然后再dateadd加上这个相隔月份数,从零开始。
复制代码 代码如下:

create function [dbo].[udf_firstdayofmonth]
(
@date date
)
returns datetime
as
begin
return dateadd(month,datediff(month,0,@date),0)
end

或者,从指定的日期取出年或月,然后与01组合为日期,即得到指定日期当月天第一天。
复制代码 代码如下:

create function [dbo].[udf_firstdayofmonth]
(
@date date
)
returns datetime
as
begin
declare @y nvarchar(4) = cast(year(@date) as nvarchar(4))
declare @m nvarchar(2) = cast(month(@date) as nvarchar(2))
return cast((@y + n'-' + @m + n'-01') as datetime)
end

或者,参考这篇: 使用convert函数,指定日期格式来转换,这样也可以获取指定日期所在月份的第一天。
复制代码 代码如下:

create function [dbo].[udf_firstdayofmonth]
(
@date date
)
returns datetime
as
begin
declare @ym nvarchar(10) = convert(varchar(8),getdate(),23)
return cast((@ym + n'01') as datetime)
end

上一篇:

下一篇: