C#中与SQL中求本周是本年的第几周

56 篇文章 1 订阅

 C#中与SQL中求本周是本年的第几周

 

最近的一个 周报表 既需要C#求本周是今年的第几周 又需要在存储过程里 通过sql求。

 

在 sql里 有函数可以直接求出。但是在C#里 没有直接的属性或函数,必须自己来算。

 

C#里可以知道今天是本周的第几天,还可以知道今天是本年的第几天。这样我们就可以求出本周是今年的第几周。 有两种思路:

1、 可以先算出 上周末是哪天,然后算出上周是第几周,(算法是: 用7整除上周末在今年的天数 如果能被整除则 结果就是上周在今年的第几周,否则 结果+1 ) 最后再 + 1, 就是本周的顺序。

例如:

 

2、 先计算今年的1月1日是一周中的第几天,然后用 今天在今年的天数 - 它 + 7,最后直接 用7除这个数 有余数则+1 即为本周的顺序,整除则不加1。

代码就不列了。

 

在sql中,利用函数 DATEPART(week,getdate()) 直接得到结果。

 

需要注意的是: DATEPART(dw,getdate()) 得到的 weekday结果是 1--7

而 C# datetime1.DayOfWeek 得到的 是 0--6

不过,有一点他们是一样的 就是 Sunday 都是本周的第一天。

 

最后,通过这些我们可以判断

 

本周的起止日期:

sqlserver中

WeekStart = CONVERT(VARCHAR(100),(getdate()-DATEPART(dw,getdate()) +1),23)

WeekEnd = CONVERT(VARCHAR(100),(getdate()-DATEPART(dw,getdate()) +7),23)

 

C#中 就不用说了

WeekStart = DateTime.Now.AddDays(-(int)DateTime.Now.DayOfWeek).ToString("yyyy-MM-dd")

WeekEnd = DateTime.Now.AddDays(6-(int)DateTime.Now.DayOfWeek).ToString("yyyy-MM-dd")

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lingxyd_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值