博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于datepart计算weekday时多一天引起的问题及解决方法
阅读量:6704 次
发布时间:2019-06-25

本文共 678 字,大约阅读时间需要 2 分钟。

hot3.png

使用datepart计算weekday时我们会发现默认sql server返回的数字总是比实际的数值大一,如:2012-12-18是星期二,使用
select datepart(WEEKDAY,'2012-12-18');
得到值总是3,这是由于sql server默认星期天作为一周的第一天引起的。有人简单指出在计算传值时只需要把当前日期减去一天就可以避免这个问题了,虽然这种方法很简单却有潜在的问题,例如:当我们计算某一天属于某一年的第几周时,会使用形如:
select datepart(week,@Day);
的方式进行查询,此时依然会存在以周日作为一周开始而引起的问题,如2013-1-6是2013年的第一个周的周日,使用
select datepart(WEEK,'2013-1-6');
计算得到的却是2,如果在日期上减去一天又会导致另一个问题,如2013-1-1分明是2013年的第一周,如果减去一天得到就成了53,因为减去一天就回到了2012-12-31,这一天属于2012年的第53周。
正确的处理方式还是要设置sql server以哪一天作为一周开始,这个设置是通过修改全局变量DATEFIRST来实现的,如果想要以周一作为一周的开始,可以通过:
set datefirst 1;
来实现,更详细的解释可以参考:
http://technet.microsoft.com/zh-cn/interopmigration/aa259210

转载于:https://my.oschina.net/pangzhuzhu/blog/327079

你可能感兴趣的文章
MLP(多层神经网络)介绍
查看>>
SQL SERVER 事务和锁
查看>>
JavaScript变量提升的理解
查看>>
CentOS安装和配置Apache(httpd)
查看>>
华为/H3C Syslog配置
查看>>
23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数...
查看>>
如何查看Isilon的节点的CPU的信息?
查看>>
C# if为false仍然进入方法体,==和qeual结果不一致
查看>>
MongoDB简单使用 —— 驱动
查看>>
WPF——TargetNullValue(如何在绑定空值显示默认字符)
查看>>
给 iOS 开发者的 RxSwift(一)
查看>>
Excel2013 破解(编辑工作表受保护)密码
查看>>
Python基础-变量作用域
查看>>
php课程 6-21 HTML标签相关函数
查看>>
Spring Boot的Tomcat 启动详解
查看>>
Elasticsearch 2.3.3 JAVA api说明文档
查看>>
zTree怎么判断树有节点展开或者完全关闭的
查看>>
如何删除一个标签,但是保留里面的内容?
查看>>
设计模式-行为型模式,python访问者模式
查看>>
命令模式
查看>>