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

use*_*473 12 sql sql-server datetime

现在我有:

year(epe_curremploymentdate) = year(DATEADD(year, -1, SYSDATETIME())) 
Run Code Online (Sandbox Code Playgroud)

但这给了我去年的一切.我想要的只是一年前的今天的数据.

Kar*_*san 20

它应该是:

epe_curremploymentdate = DATEADD(year, -1, GETDATE())
Run Code Online (Sandbox Code Playgroud)

不要在where子句中检查年份.

编辑:

简单:使用

cast(epe_curremploymentdate AS DATE) = cast(DATEADD(year, -1,
  GETDATE()) AS DATE)
Run Code Online (Sandbox Code Playgroud)

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

  • 简单使用 cast(epe_currremploymentdate as date) = cast(DATEADD(year, -1, GETDATE()) as DATE),也就是说,如果您使用的是 sql 2008,我已经更新了我的答案 (3认同)

Dea*_*ean 5

这应该可以带您到达您需要去的地方:

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.
Run Code Online (Sandbox Code Playgroud)

  • 您从哪里得到结束日期?问题中没有提出这个问题,也没有必要。只需要开始日期部分。 (2认同)