Sql server 2005 Sql server 2005日期函数

Sql server 2005 Sql server 2005日期函数,sql-server-2005,tsql,date,Sql Server 2005,Tsql,Date,我想知道如何使用getdate& 其他表中的现有日期,其中该表包含多条记录,即我希望 了解5天前、10天前或15天前发布的作业。我已经写了 查询式 declare @q1 datetime; select cdate from jobposting where cdate like (select cdate) select datediff ( dd, q1, getdate()) 其中q1必须存储jobposting表中的所有日期,但我无法得到正确答案 或者我也试过 select date

我想知道如何使用getdate& 其他表中的现有日期,其中该表包含多条记录,即我希望 了解5天前、10天前或15天前发布的作业。我已经写了 查询式

declare @q1 datetime;
select cdate from jobposting where cdate like (select cdate)
select datediff ( dd, q1, getdate())
其中q1必须存储jobposting表中的所有日期,但我无法得到正确答案

或者我也试过

select datediff ( dd, select cdate from jobposting, getdate())

提前感谢你

您的问题并不完全清楚,但这应该会返回cdate为5天或更小的所有jobposting行


如果我正确理解你的问题,有两种常见的方法来实现你的要求:

首先,按照Kim的建议使用datediff

另一种方法是计算出5天前的日期,然后将表中的日期与该列进行比较,如果该列已编制索引,则该日期应快于DateDiff:

declare @cutoff datetime;
set @cutoff = dateadd(day, -5, getdate());
select * from jobposting where cdate >= @cutoff;

这应该可以,假设5天@可以要求将天数作为存储过程的参数,以使其灵活:

DECLARE @days int
SET @days = 5

SELECT cdate
FROM jobposting
WHERE datediff(d, cdate, getdate()) <= @days

这将使一切5天或更长。我承认这个问题有点模棱两可,但关于拉克什米想在5天内回到哪一边:@Matt:Agh,我很确定我说对了:编辑,谢谢!是的,这可能更好——首先计算最早的日期,然后依靠索引获得相关匹配+1.+1:我认为这一个正确地回答了这个问题,以及我将如何编码它。
DECLARE @days int
SET @days = 5

SELECT cdate
FROM jobposting
WHERE datediff(d, cdate, getdate()) <= @days