DATEFIRST的影响力
来源:互联网 发布:西服颜色 知乎 编辑:程序博客网 时间:2024/05/16 00:31
DATEFIRST的影响力
DATEFIRST用来确定一周中第一天是星期几。可以通过SET DATEFIRST和@@DATEFIRST来设置和返回其值:
值
一周的第一天是
1
星期一
2
星期二
3
星期三
4
星期四
5
星期五
6
星期六
7(默认值,美国英语)
星期日
DATEFIRST主要影响日期函数中涉及到星期的两个参数:WEEK和WEEKDAY:前者通常表示指定日期是当年的第几个星期;后者通常表示指定日期是一周中第几天。
所有的日期函数中,只有DATEPART函数受DATEFIRST的影响,其它函数都不受其影响。下面来详细说说。
1. DATEPART受其影响
DATEPART(WEEKDAY, @DT)返回指定日期是一周中的第几天,注意是相对于DATEFIRST为一周中第一天,这和是星期几不是一个概念。这也就是说,随着DATEFIRST设置不同,同一日期的上述返回值也不同。为了抵消这种影响,我们可以将@@DATEFIRST添加到@DT上,此时调用DATEPART与把DATEFIRST设为7的结果是一致的。如果你想把DATEFIRST逻辑地设置为n,从日期减去常数n即可:
DATEPART(WEEKDAY, @DT + @@DATEFRST - n)
DATEPART(WEEK, @DT)返回指定日期是一年中第几个星期。用下面这种方法表述也许能更好理解这个函数:SQL Server总是将每年的1月1日所在的WEEK的值总是1,其后每经过一个DATEFIRST就将值增加1。
很多查询中要求按周分组,此时我们可以设置好DATEFIRST(因为中国人习惯是星期一是一周的第一天,而SQL SERVER缺省却是星期日是第一天),然后调用DATEPART(WEEK, @DT)分组就可以了。如果你想只是把DATEFIRST逻辑地设置为n,那可调用如下:
DATEPART(WEEK, @DT + @@DATEFRST - n)
2. DATEDIFF不受影响
DATEDIFF(WEEKDAY, @DT1, @DT2)和DATEDIFF(DAY, @DT1, @DT2)返回的结果一致。
DATEDIFF(WEEK, @DT1, @DT2)则和DATEFIRST为7时的DATEPART(WEEK, @DT2) – DATEPART(WEEK, @DT1)一致。
3. DATENAME不受影响
DATENAME(WEEKDAY, @DT)返回当前语言中,指定日期是星期几的字符串,比如下表分别为中(简体中文)英(us_english)文下的返回值(不包括引号):
简体中文
us_english
“星期一”
“Monday”
“星期二”
“Tuesday”
“星期三”
“Wednesday”
“星期四”
“Thursday”
“星期五”
“Friday”
“星期六”
“Saturday”
“星期日”
“Sunday”
DATENAME(WEEK, @DT)则返回的DATEFIRST为7时的DATEPART(WEEK, @DT)的值。
4. DATEADD不受影响
DATEADD(WEEKDAY, n, @DT)相当于DATEADD(DAY, n, @DT)
DATEADD(WEEK, n, @DT)相当于 DATEADD(DAY, n * 7, @DT)即n个星期以后的日期是多少。
参考书籍:
1.《Microsoft SQL Server2005技术内幕:T-SQL程序设计》
- DATEFIRST的影响力
- 获取一周数据的设计 @@DATEFIRST
- MSSQL SET datefirst 的使用注意
- 影响力一:影响力的武器
- 《影响力》读书笔记,第一章 影响力的武器
- 《影响力》读书总结(一):影响力的武器
- google的影响力
- 个人影响力的未来
- 《影响力》的影响
- js的影响力
- 有影响力的攻击
- 学术期刊的影响力
- 《影响力》
- 影响力
- 影响力
- 影响力
- 影响力
- 影响力
- 一个完整的项目管理流程
- ORACLE 和 SQL 在EXT中分页查询代码
- getAttribute 和 getParameter 的区别
- XXX管理平台系统项目管理实例(论文经验参考)
- EXCEL中限制输入字符
- DATEFIRST的影响力
- 仿Google自动提示 SearchSuggess (转)
- 10条宝贵的工作经验
- 序列容器---vector,deque,list的区别
- 配置android system开发环境
- Windows Mobile 下使用C#进行GPRS、CDMA开发(转)
- Asterisk Summary - 4
- 仿屏保纯as随机飘动气泡
- 初学c++倒三角输出