Sql 我如何找到一年前这一天的数据?

Sql 我如何找到一年前这一天的数据?,sql,sql-server,datetime,Sql,Sql Server,Datetime,现在我有: year(epe_curremploymentdate) = year(DATEADD(year, -1, SYSDATETIME())) 但这给了我去年的一切。我想要的只是一年前今天的数据。今天的日期: select getdate() 一年前的日期: select dateadd(year, -1, getdate()) 一年零一天前的日期: select dateadd(d, -1 , dateadd(year, -1, getdate())) 更新: 这将为您提供一

现在我有:

year(epe_curremploymentdate) = year(DATEADD(year, -1, SYSDATETIME())) 
但这给了我去年的一切。我想要的只是一年前今天的数据。

今天的日期:

select getdate()
一年前的日期:

select dateadd(year, -1, getdate())
一年零一天前的日期:

select dateadd(d, -1 , dateadd(year, -1, getdate()))
更新:

这将为您提供一份从一年前开始工作的所有员工的列表

希望这有帮助

应该是:

epe_curremploymentdate = DATEADD(year, -1, GETDATE())
不要在where条款中检查年份

编辑:

简单:使用

cast(epe_curremploymentdate AS DATE) = cast(DATEADD(year, -1,
  GETDATE()) AS DATE)

也就是说,如果您使用的是SQL Server 2008及更高版本。

这将帮助您找到需要去的地方:

Declare @StartDate datetime, @EndDate datetime

-- @StartDate is midnight on today's date, last year
set @StartDate = Convert(date, (DATEADD(year, -1, getdate()))) 
set @EndDate = DATEADD(Day, 1, @StartDate)

select * 
from YourTable 
where epe_curremploymentdate >= @StartDate 
    and epe_curremploymentdate < @EndDate

-- This where clause will get you everything that happened at any time 
-- on today's date last year.

epe_currenemploymentDate=DATEADDyear,-1,GETDATE

如果您有其他显示为datetime的字段,时间部分为00:00:00.000,要进行连接,您可以使用下面的

 dateadd(yy,-1,datediff(d,0,getdate())) 

你能解释一下反对票吗?或者你能指出这个答案有什么错吗?我想找到的是所有一年前从今天开始工作的人2013@user3630473我已经更新了我的答案。看一看itI没有否决投票,但是dateaddd,-1,dateaddyear,-1,getdate获得了时间-因此必须找到确切的日期和时间。这不是询问者想要的。问题是:GETDATE返回分钟、秒等。因此,只有在去年这个确切的时间开始工作的员工才会这样做。简单使用castepe_CurrenEmploymentDate as date=castDATEADDyear,-1,GETDATE as date,也就是说,如果您使用的是sql 2008,我已经更新了我的answer@user3630473如果此答案解决了您的问题,请将此答案标记为您的个人资料表明了这一点。你从来没有标记过任何答案。请学会标记答案,因为他们将在未来帮助其他用户,并感谢那些花时间帮助你的人。现在我如何看待1年加2天?那么,如果今天是15号,我想看看去年的17号?@Doomsy只需做DATEADDyear,-1,GETDATE+2你从哪里得到了结束日期?问题中没有提出,也没有必要。只需要开始日期部分。按照我们的方式,没有闰年日期开始点。谢谢你的例外,不要忘记考虑你想要什么和DBMS提供什么,当当前日期是闰日,如2012-02-29。您可能希望并获得2011-02-28作为2012-02-28和2012-02-29的“恰好一年前”日期。相反,对于2013年的任何日期来说,2012-02-29都不是“整整一年前”的日期。重新提交了2012-02-28的更正错别字,作为现在更正的2011-02-28。
 dateadd(yy,-1,datediff(d,0,getdate()))