2009-10-20 72 views
8

我的内容表看起来像(contentID,标题,创建)。我需要获取3周以前创建的所有内容。sql查询获取超过3周的内容

Sql服务器数据库,创建日期时间类型。

+0

格式是什么'created'吗? – 2009-10-20 00:38:12

+0

如果您提到数据库,它会有所帮助。我不确定是否有这样做的ANSI方法。 – Petros 2009-10-20 00:38:36

+0

创建的是datetime类型,sql server db。 – mrblah 2009-10-20 00:40:40

回答

33

如何:

select contentID, title, created 
from content 
where created < dateadd(week,-3,getdate()); 

这种坚持更接近问题。 21天很好,显然意味着相同,但是我发现使用问题中使用的术语是很好的。

例如...一段时间后,我被要求调查一个站点的50位访问者中平均有1位访问者。我把这个比例描述为0.02,而客户并不高兴。我向客户指出他们是一样的,但我学到了我的教训,现在如果我改变了描述某种事物的方式,我确信我会对此发表评论,并且最好不要在第一次改变它地点。如果客户想要3周,那么做3周,而不是21天。

+0

+1良好的说法 – 2009-10-20 01:13:35

+0

+1,是的,好点 – 2009-10-20 01:16:12

+0

+1当他们想改变它到4周,他们不想做数学(我想这就是为什么我们有计算机和程序员)。 – JeffO 2009-10-20 01:25:27

3

在MS SQL 2000/2005,你可以做到这一点

Select 
    contactID, 
    title, 
    created 
from 
    content 
where 
    created < getdate()-21 
+0

你应该尽量远离隐含的“dateadd(day)”数学。为什么? SQL Server 2008中新的DATE数据类型不会像+或 - 操作符(将出现类型冲突错误)。我使用了GETDATE()+ - INT很长一段时间,并且正在努力打破自己的习惯。 – 2009-10-20 01:41:13

0

试试这个:

select contentID, title, created from content 
where created < dateadd(day,-21,getdate()) 
+0

如何在这里使用此方法来解决我的问题:http://stackoverflow.com/questions/26021347/how-to-get-two-week-prior-data-from-a-table – SearchForKnowledge 2014-09-24 17:55:32