sql求助一个函数

类似于FR的DATEINWEEK函数
DATEINWEEK(date, number):函数返回在某一个星期当中第几天的日期。示例:
dateInWeek("2008-08-28", 2)等于2008-08-26。
dateInWeek("2008-08-28", -1)等于2008-08-31。
如果最后一个参数为-1,返回该日期所在星期的最后一天

目前我已完成一部分,但是计算个别日期有问题,特别是跨年计算的时候;
select dateadd(dd, DATEPART(wk,'2016-12-09') * 7 - datepart(dw, cast(2016 - 1 as varchar(4)) + '-12-31') + 1, cast(2016 as varchar(4))+'-01-01')

这样的结果就是2016-12-12,明显值错误了,应该是2016-12-05;
跨年的时候,输入值为2017-01-01,结果返回2017-02-02,应该是2016-12-26;
注意,我后面的+1,是取周一的日期;
sql server数据库








编辑于 2017-8-28 09:36  
FineReportPoseidon 发布于 2017-8-28 09:32
悬赏:2 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
Poseidon发布于2017-8-28 09:32(编辑于 2023-9-6 09:34)
555
  • 0关注人数
  • 608浏览人数
  • 最后回答于:2017-8-28 10:51
    活动推荐 更多
    热门课程 更多
    返回顶部