Sql 基于星期几的日期的去年等效值

Sql 基于星期几的日期的去年等效值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,那么,我如何获得这两个项目去年的等价物: 前几周的星期一是去年的日期 前几周的星期日是去年的 根据我得到的价值: -今年上个星期开始 SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0) SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 6) -今年上周末 SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0) SELECT DATEADD(wk,

那么,我如何获得这两个项目去年的等价物:

前几周的星期一是去年的日期 前几周的星期日是去年的

根据我得到的价值:

-今年上个星期开始

SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0)  
SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 6) 
-今年上周末

SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 0)  
SELECT DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 6) 
因此,根据今天2016年1月6日的数据,我得到了今年的以下信息:

今年前一个星期一日期=2015年12月28日

今年前一个星期日日期=2016年1月3日

我希望实现:

上一个星期一日期去年=2014年12月29日 上一个星期日去年日期=2015年1月4日

语法将每4年处理一次闰年问题

谢谢


它太简单了

你能再举几个例子,特别注意边界吗?例如,对我来说,你的第一个代码似乎是在周六和周日之间转换的-如果你问上周今天的日期是2016-01-03,它会返回2015-12-28-2016-01-03,即包括当前周日的范围。是这样吗?你是在问去年前一周的开始日期和结束日期,以及今年本周的数字吗?如果是这样的话,像这样的事情可能会奏效吗?设置DATEFIRST 2选择DATEADDWEEK、DATEPARTWk、DATEADDwk、DATEDIFFwk、6、GETDATE、0-1、DATEADDYEAR、-1、GETDATE为上一个星期一如果我们将其与@G.Nagababu的查询相比较,您的查询有什么好处。两个查询都有相同的SQL语法。谢谢。它似乎仍然没有解决闰年问题。我将getdate更改为声明@testdate datetime;设置@testdate='20160229,我现在得到上一个星期一日期去年='2015-02-16'和上一个星期日日期去年='2015-02-22',但我认为这将分别是'2015-03-02'和'2015-03-08'。更改@testdate='20160222'会得到与'20160229'相同的答案,这对于testdate'20160222'是正确的,但是对于'20160229'是错误的。更改@testdate=20160307会得到“2015-02-23”和“2015-03-01”,但我认为我应该得到“2015-03-09”和“2015-03-15”。我将其更改为以下内容,似乎是从上周开始工作选择castDATEADDwk,DATEDIFFwk,6,dateaddweek,-52,@testdate,0作为日期-上周结束选择castDATEADDwk,DATEDIFFwk,6,dateaddweek,-52,@testdate,6作为date@beatrice1711-我特别惊讶于您的输入是20160307,输出是“2015-03-09”和“2015-03-15”-因为这些似乎是去年的未来日期。这就是为什么我要求您改进您的问题,并添加一些工作示例,以便我们能够清楚地了解您的需求。闰年可能会有问题,但有很多方法可以解决,仅仅说“解决闰年问题”并不能给我们足够的指导。你能详细说明你的问题吗@beatrice1711你只面临闰年的问题吗。