今天的date减去两个月的SQL查询

我想select一个表中的所有logging,其中他们的入境date大于2个月。

任何想法我怎么能做到这一点?

我还没有尝试过任何东西,但我在这一点上:

SELECT COUNT(1) FROM FB WHERE Dte > GETDATE() 

如果你正在使用SQL Server,请试试这个:

 SELECT * FROM MyTable WHERE MyDate < DATEADD(month, -2, GETDATE()) 

基于你的更新,它将是:

 SELECT * FROM FB WHERE Dte < DATEADD(month, -2, GETDATE()) 

你没有提到你的DBMS,但是这将是标准ANSI SQL的解决scheme

 SELECT * FROM MyTable WHERE MyDate < CURRENT_DATE - INTERVAL '2' MONTH 
 SELECT COUNT(1) FROM FB WHERE Dte > DATE_SUB(now(), INTERVAL 2 MONTH) 

会有这样的事情为你工作?

 SELECT * FROM FB WHERE Dte >= DATE(NOW() - INTERVAL 2 MONTH); 
 SELECT COUNT(1) FROM FB WHERE Dte BETWEEN CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(month, -1, GETDATE())) AS VARCHAR(2)) + '-20 00:00:00' AND CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-' + CAST(MONTH(GETDATE()) AS VARCHAR(2)) + '-20 00:00:00' 

TSQL,替代使用variables声明。 (这可能会提高查询的可读性)

 DECLARE @gapPeriod DATETIME = DATEADD(MONTH,-2,GETDATE()); --Period:Last 2 months. SELECT * FROM FB as A WHERE A.Dte <= @gapPeriod; --only older records.