我有一些数据库记录,其中一列包含添加记录的日期(称为COMP_DATE)。
我需要进行一个每天运行的查询,该查询选择COMP_DATE恰好是n年,11个月和15天之前(24小时内)的记录。 (I.E.在n年前15天)。
这样做的最佳方法是什么?我应该减去(n * 356 - 15天)吗?我该如何做到这一点?
感谢。
答案 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答案。