当前位置:Gxlcms > mysql > 关于SqlServer星期和C#星期被坑

关于SqlServer星期和C#星期被坑

时间:2021-07-01 10:21:17 帮助过:49人阅读

中国人习惯星期习惯是每周的周一是一个星期的第一天 但老外则是星期天是每周的第一天 但在sqlServer和C#中又有不同 在这里我也是被坑的很惨(先做了sqlServer的处理自以为C#和SqlServer是一样的处理就没多想 然后就。。。。。 死的很惨) 注:2015-01-5 是星期

中国人习惯星期习惯是每周的周一是一个星期的第一天 但老外则是星期天是每周的第一天

但在sqlServer和C#中又有不同 在这里我也是被坑的很惨(先做了sqlServer的处理自以为C#和SqlServer是一样的处理就没多想 然后就。。。。。 死的很惨)

注:2015-01-5 是星期一

sqlServer用函数 SELECT DATEPART(weekday, '2015-01-5') 查询返回的是 2

C# DateTime类下面有个属性DayOfWeek ; Convert.ToDateTime('2015-01-5').DayOfWeek; 获取返回的是 1

SqlServer的星期是从1-7 1:星期天 以此类推 7:星期六

C#的星期是从0-6 0:星期天 以此类推 6:星期六

如果要吧sqlServer和C#的时间星期转换成我们中国人的习惯星期 这这需要做下转换工作

sqlServer:

  1. CREATE FUNCTION [dbo].[Get_TimeWeek] (@time datetime) returns int
  2. as
  3. BEGIN
  4. declare @sdate INT
  5. declare @week INT
  6. SET @sdate= DATEPART(weekday, @time)
  7. SELECT @week=CASE
  8. when @sdate =1 then 7
  9. when @sdate =2 then 1
  10. when @sdate =3 then 2
  11. when @sdate =4 then 3
  12. when @sdate =5 then 4
  13. when @sdate =6 then 5
  14. when @sdate =7 then 6
  15. else 0
  16. END
  17. return @week
  18. END

C#

  1. public static int CaculateWeekDay(DateTime time)
  2. {
  3. int w = (int)time.DayOfWeek;
  4. int week = 0;
  5. switch (w)
  6. {
  7. case 0:
  8. week = 7;
  9. break;
  10. case 1:
  11. week = 1;
  12. break;
  13. case 2:
  14. week = 2;
  15. break;
  16. case 3:
  17. week = 3;
  18. break;
  19. case 4:
  20. week = 4;
  21. break;
  22. case 5:
  23. week = 5;
  24. break;
  25. case 6:
  26. week = 6;
  27. break;
  28. }
  29. return week;
  30. }

人气教程排行