获取指定日期月份的第一天,你可以使用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