sqlserver sql语句where后取出年的最后一周的函数或者方法

最开始我用的DATEPART求周数,用DATEPART(wk,'2022-12-31') 但是发现是返回53周,比日历多一周

因为要和别的系统连接,中间有个对比周数的过程,别的系统返回2022年就是52周(按日历来的),但是在sqlserver用DATEPART是53周  怎么取到正确的52周呢

也可以不用DATEPART,用什么都行,求出52周就可以

FineReport SQL 狂奔的小蜗牛 发布于 2022-12-29 15:56 (编辑于 2022-12-30 10:19)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
墨白哦Lv6见习互助
发布于2022-12-29 16:18(编辑于 2022-12-29 16:20)

-1嘛  2022年就是53周 ,52周应该是向下取整了,-1就行 image.png

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) sqlserver是按周日算的,到周日就算1周,普通是按周1算的,到周一就算一周,那直接减一会不会有问题呢
    2022-12-29 16:35 
  • 墨白哦 墨白哦 回复 狂奔的小蜗牛(提问者) 不会,因为函数算的是到第几周,而不是过了完整的几周
    2022-12-30 09:13 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 墨白哦 但是我们取数据都是取的每周一的数据,所以像52周过了几天的情况实际是可以取到第53周数据的。但是我们程序逻辑又要对比周数,因为一个52周一个53周又没法对比。所以最好是sqlserver 能有办法直接取到52周,而不是用DATEPART函数取到53周
    2022-12-30 10:14 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 墨白哦 然后你说的直接 -1 我怕有问题啊,有没有这样的一个年,他正好天数是52或者53周,用DATEPART取也是52或者53,如果DATEPART -1了,那会不会比实际的的周数少了一周呢
    2022-12-30 10:17 
  • 墨白哦 墨白哦 回复 狂奔的小蜗牛(提问者) 首先 2022年就是53周,这个是你别的系统算法有问题导致的52周,然后你看看你别的系统2022-01-01 和2022-01-03分别是第几周,如果都是第一周,那就是按天算的,
    2022-12-30 11:59 
  • 2关注人数
  • 375浏览人数
  • 最后回答于:2022-12-30 10:19
    请选择关闭问题的原因
    确定 取消
    返回顶部