sql使用datediff计算周的时候,周一作为一周的第一天的计算问题

兰色毒药 2018-05-30 11:53:20
使用datediff计算周的时候,因为计算中有跨年的情况,所以用了从元年开始计算周,但是默认的情况下周日是作为一周的开始的,导致我计算结果的时候,和客户手工计算出来的结果相差比较大了。。。
举个例子:2018-05-19和05-20,客户都算同一周,但是用datediff计算出来就不是了



SET DATEFIRST 1
SELECT DATEPART(wk,'2018-05-20') AS '2018-05-20',DATEDIFF(ww,0,'2018-05-20'),DATEPART(wk,'2017-05-13') AS '2017-05-13',DATEDIFF(ww,0,'2017-05-13')
,DATEDIFF(ww,0,'2018-05-19') AS '2018-05-19'


百度说,DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]),,有可以设置firstdayofweek的,但是我设了提示只有3个参数的。。。
...全文
1781 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2018-05-31
  • 打赏
  • 举报
回复

declare @dt date
select @dt = '2018-5-28'

select @dt as currentDay,datepart(WEEKDAY,@dt) as weekdaynum
,dateadd(d,(case when datepart(WEEKDAY,@dt)=1 then -6 else 2-datepart(WEEKDAY,@dt) end),@dt) as FirstDayOfWeek
,dateadd(d,(case when datepart(WEEKDAY,@dt)=1 then 0 else 8-datepart(WEEKDAY,@dt) end),@dt) as LastDayOfWeek
,datepart(week,@dt) as DefaultWeekNumber
,datepart(week,@dt)+(case when datepart(WEEKDAY,@dt)=1 then -1 else 0 end) as NewWeekNumber
qq_25073223 2018-05-30
  • 打赏
  • 举报
回复
datediffhttp://www.maomao365.com/?p=6309这个应该是两个时间差然后,按周 天 小时 展现给用户吧!
qq_25073223 2018-05-30
  • 打赏
  • 举报
回复
datediff 这个应该是两个时间差然后,按周 天 小时 展现给用户吧!
兰色毒药 2018-05-30
  • 打赏
  • 举报
回复
百度出来的
引用 1 楼 yenange 的回复:
你百度哪里可以设置这个 firstdayofweek ? http://www.w3school.com.cn/sql/func_datediff.asp https://technet.microsoft.com/zh-cn/library/ms174630(v=sql.110).aspx https://docs.microsoft.com/zh-cn/sql/t-sql/functions/datediff-transact-sql?view=sql-server-2017 msdn 官网都找不到有这个参数的
嗯,搜了msdn上真没有,被百度忽悠了,还特意用了sqlserver datediff这个搜的,,,出来的结果根本不是sqlserver的。。。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧