繁体   English   中英

SQL:星期一的第一天

[英]SQL: First day of week Monday

我想将星期一显示为一周的第一天,将星期日显示为一周的最后一天。 我正在为此报告使用报告服务器。

我的查询:

   Select
Datum,
Sum(Prod) as Prod

FROM ( 
Select 

intervaldate as Datum,
Sum(case when TabName = 'Produzierte Dosen' then DisplayUnits else 0 end) as Prod


from vwOeeIntervalCount 
where 
IntervalDateWeek >=  dateadd(wk, datediff(wk, 0, getdate()) - 1, 0)  
and IntervalDateWeek < dateadd(wk, datediff(wk, 0, getdate()), 0)
and  IntervalDate >= dateadd(day,datediff(day,0,GETDATE())-6,0)
AND IntervalDate < dateadd(day,datediff(day,0,GETDATE()),0) 

and CalculationName = 'Packaging'

group by intervaldate
)c

group by Datum

结果如下:

Date                      |Prod 
2018-02-25 00:00:00.000   |1836528
2018-02-26 00:00:00.000   |8131127,99999999

编辑:对不起,这是我的问题。 我想将星期一显示为一周的第一天。 我的查询将星期日显示为一周的第一天。 我怎样才能做到这一点?

默认情况下,MS SQL Server 已将星期日配置为一周的第一天。

您可以使用以下命令将一周第一天的服务器配置设置为任何一天:

SET DATEFIRST { number | @number_var } 

Value   First day of the week is
1   Monday
2   Tuesday
3   Wednesday
4   Thursday
5   Friday
6   Saturday
7 (default, U.S. English)   Sunday

来源: https : //docs.microsoft.com/en-us/sql/t-sql/statements/set-datefirst-transact-sql

您可以将其用于本周:

/*-- Week Start
--1->Sunday --2->Monday....*/
SELECT CAST(DATEADD(dd, -(DATEPART(dw,  GETDATE()))+2, GETDATE()) AS DATE) [WeekStart], 
       CAST(DATEADD(dd, 8-(DATEPART(dw, GETDATE())), GETDATE()) AS DATE) [WeekEnd]
  /*-- Week End
  --7->Saturday --8-> Sunday...*/

今天运行这个将产生这样的结果:

WeekStart  WeekEnd
---------- ----------
2018-02-26 2018-03-04

如果您的表中有日期,则可以使用它们代替GETDATE()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM