参考网址
代码如下:
select [startdate] from [dbo].[udf_week](2012,2012) where [week] = 1
上面sql语句执行结果:
但你还是觉得此方法很复杂,而且只需要日期部分,时间部分无需显示。因此insus.net更改并产生如下一个新函数,你把函数附加入你的数据库中,即可在程序中应用它了。
代码如下:
udf_startdateoffirstweek
set ansi_nulls on
go
set quoted_identifier on
go
create function udf_startdateoffirstweek
(
@year int
)
returns date
as
begin
declare @startdate date = cast((cast(@year as varchar(4)) + '-01-01') as date)
return
case when (datepart(dw,@startdate) > 4)
then dateadd(day,(8 - datepart(dw,@startdate)) ,@startdate)
else dateadd(day,(-(datepart(dw,@startdate)-1)),@startdate)
end
end
go
函数执行demo:
