文档章节

关于datepart计算weekday时多一天引起的问题及解决方法

猪刚烈
 猪刚烈
发布于 2014/10/12 11:40
字数 383
阅读 17
收藏 0
使用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

本文转载自:http://blog.csdn.net/bluishglc/article/details/8315443

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
SQL获取每月最后一天记录

SQL获取每月最后一天记录 DECLARE@dt datetime SET@dt =GETDATE() DECLARE@number int SET@number =3 --1.指定日期该年的第一天或最后一天 --A. 年的第一天 SELECTCONVERT(char(5),@dt ,120...

开源中国首席老王
2015/12/09
268
0
sqlserver datetime转换成带格式的字符串

sqlserver datetime转换成带格式的字符串,sqlserver datetime转换成固定格式的字符串,sqlserver datetime转换成字符串,sqlserver 时间类型与字符串之间的转换 我们在项目开发中经常用到sqlse...

憨豆1号
2013/03/06
0
0
Sql 中常用日期转换Convert(Datetime)

CONVERT(data_type,expression[,style]) convert(varchar(10),字段名,转换格式) 说明: 此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar) 相互转换的...

stephen_wu
2016/08/22
16
0
sql中时间日期操作(时间日期函数,时间日期格式,时间日期转换参数,时间日期比较,时间日期计算)

sql中对时间进行操作,需要掌握四个时间函数:dateadd,datediff,datepart,datename。 dateadd是在指定日期上相加或相减一个时间。 如:在指定日期添加3天select dateadd(day,3,'2010-05-06'),...

huyuner1
06/26
0
0
iOS开发 关于时间问题的处理

对时间的处理一般都会用到NSDate类和NSCalendar类两个类。 获取当前的时间是:NSDate nowDate = [NSDate date];获取具体的年月日就是对nowDate的处理;一般要用到NSCalendar类,首先是对NSC...

Alan_JL
2016/02/26
5
0

没有更多内容

加载失败,请刷新页面

加载更多

storm drpc实例

序 本文主要演示一下storm drpc实例 配置 version: '2'services: supervisor: image: storm container_name: supervisor command: storm supervisor -c storm.......

go4it
12分钟前
0
0
官宣 | Chrome 70正式向所有HTTP网站发出红色“不安全”警告!

10月17日,坐拥10亿用户的Chrome浏览器正式上线70版本。作为第一个采用TLS1.3正式版的Chrome版本,在安全新功能方面,Chrome 70进一步升级了HTTP页面“不安全”显示标识,即当用户输入数据时...

亚洲诚信
13分钟前
1
0
mysql 数据类型及占用字节数

数字类型 TINYINT                           1 字节 SMALLINT                          2 个字节 MEDIUMINT                         3 个字节...

会游泳的鱼_
今天
6
0
高性能mysql:创建高性能的索引

性能优化简介 MySQL性能定义为完成某件任务所需要的时间量度,换句话说,性能即响应时间,这是一个非常重要的原则。我们通过任务和时间而不是资源来测量性能。数据库服务器的目的是执行SQL语...

背后的辛酸
今天
8
0
HTTP get、post 中请求json与map传参格式

import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.List;im......

寒风中的独狼
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部