根据过去的日期检索SQL记录?

时间:2012-03-01 22:52:28

标签: sql sql-server date

我有一些数据库记录,其中一列包含添加记录的日期(称为COMP_DATE)。

我需要进行一个每天运行的查询,该查询选择COMP_DATE恰好是n年,11个月和15天之前(24小时内)的记录。 (I.E.在n年前15天)。

这样做的最佳方法是什么?我应该减去(n * 356 - 15天)吗?我该如何做到这一点?

感谢。

4 个答案:

答案 0 :(得分:1)

最好的方法是在11个月和15天前获得n年的另一种方式 删除n + 1年并添加15天,您将有更少的错误空间

DECLARE @n as INT=<your value here>;

SELECT *
FROM   records
WHERE  comp_date BETWEEN Dateadd(DAY, 15, Dateadd(YEAR, -@n-1, Getdate()))
   AND Dateadd(DAY, 16, Dateadd(YEAR, -@n-1, Getdate())); 

希望有所帮助;)

答案 1 :(得分:0)

有日期化学疗法的功能。例如,Dateadd

(假设这是基于问题标签的Microsoft SQL Server。)

答案 2 :(得分:0)

select * from records where
comp_date = dateadd(year,-n,dateadd(month,-11,dateadd(days, -15, GetDate())));

* assumimg comp_date的类型为Date。

答案 3 :(得分:0)

如果comp_date是日期时间列类型,则您需要搜索范围(24小时范围)。此外,如果您在n年前寻找15天,查询应如下所示:

select * from records where
comp_date >= dateadd(year,-n,dateadd(day, -15, getdate()))
and comp_date < dateadd(year,-n,dateadd(day, -14, getdate()));

如果您确实想要11个月和15天前的n年,请使用WOPR答案。