sqlserverDATEPART函数用法

DATEPART 这个函数返回的周数是正好的还是多一周,为什么日历是52周呢

而select DATEPART(wk,'2022-12-31'),返回53周呢。

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

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

https://blog.csdn.net/Data_Money/article/details/117127456

造成星期不匹配的原因是:DatePart函数和SQL系统默认将星期7作为每周第一天,这个是西方的次序。而我们认为星期1才是每周第一天

最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-12-29 14:38

set datefirst 1---设置SQL一周从周一开始

select DATEPART(wk,'2022-12-31')

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 这是怎么设置的
    2022-12-29 14:47 
  • Z4u3z1 Z4u3z1 回复 狂奔的小蜗牛(提问者) 算法不统一把 你自己掏出手机数一下就是53周
    2022-12-29 14:56 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 Z4u3z1 是不同一的啊,那得按人家的来的,要不咱们做的外部接口比人家多一周肯定不行啊,所以才要请教怎么算出52周,我复制了你写的到数据库试了一下还是53周,而且我是写在where条件里的 要where 字段a = 咱们取出的年最大周
    2022-12-29 15:01 
  • Z4u3z1 Z4u3z1 回复 狂奔的小蜗牛(提问者) TA又是啥规则嘛?说出来啊
    2022-12-29 15:02 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 Z4u3z1 啊?啥意思啊,啥TA啊。。。我没懂。。 大佬你回错人了吧
    2022-12-29 15:05 
最佳回答
0
北纬六十六度Lv4初级互助
发布于2022-12-29 14:38

数据库里面这个函数算法就是这样的,跟日历统一只能是减一下,

select datepart(wk,'2022-01-01')

select datepart(wk,'2022-01-02')

这两个语句  第一个是第一周,第二个已经是第二周了,第一个是周六,第二个是周日,周日已经算第二周了

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 额,那我怎么取才能取到正确的周数呢,用其他函数也可以,用这个也行,只要能取到正确的就行。你说的那个减一下怎么实现呢
    2022-12-29 14:46 
  • 3关注人数
  • 405浏览人数
  • 最后回答于:2022-12-29 15:02
    请选择关闭问题的原因
    确定 取消
    返回顶部