DATEFIRST的影响力

<!-- p.MsoNormal {mso-style-parent:""; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; font-family:"Times New Roman"; margin-left:0cm; margin-right:0cm; margin-top:0cm} table.MsoTableGrid {border:1.0pt solid windowtext; text-align:justify; text-justify:inter-ideograph; font-size:10.0pt; font-family:"Times New Roman"; } -->

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 程序设计》

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DateFirst ERP是一款全面的企业资源计划软件。它提供了一系列的功能模块,包括采购管理、销售管理、库存管理、生产管理、财务管理等,帮助企业实现全面的信息化管理。 首先,DateFirst ERP的采购管理模块使企业能够有效管理采购流程。它可以帮助企业自动化采购流程,包括供应商选择、采购订单生成、采购合同管理等。通过该模块,企业能够更好地控制采购成本,提高采购效率。 其次,DateFirst ERP的销售管理模块能够帮助企业管理销售流程。它可以帮助企业实现销售订单的生成、库存管理、销售合同管理等功能。通过该模块,企业可以更好地管理销售过程,提高销售效率,增加销售额。 DateFirst ERP还拥有完善的库存管理模块。它可以帮助企业实时掌握库存情况,包括库存数量、库存成本等。同时,企业可以通过该模块进行库存调拨、库存盘点等操作,以实现更加高效的库存管理。 此外,DateFirst ERP的生产管理模块能够帮助企业管理生产流程。它可以帮助企业制定生产计划、跟踪生产进度、协调生产资源等。通过该模块,企业可以更好地控制生产过程,提高生产效率。 最后,DateFirst ERP还提供了财务管理模块。它可以帮助企业管理财务流程,包括财务核算、财务报表生成、资金管理等。通过该模块,企业可以更好地掌握财务状况,提高财务管理水平。 综上所述,DateFirst ERP是一款功能丰富、全面的企业资源计划软件。它可以帮助企业实现信息化管理,提高管理效率,提升竞争力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值