182

I want to select all the records in a table where their date of entry is older then 2 months.

Any idea how I can do that?

I haven't tried anything yet but I am on this point:

SELECT COUNT(1) FROM FB WHERE Dte > GETDATE()
Abe Miessler
  • 82,532
  • 99
  • 305
  • 486
Laziale
  • 7,965
  • 46
  • 146
  • 262

6 Answers6

359

If you are using SQL Server try this:

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

Based on your update it would be:

SELECT * FROM FB WHERE Dte <  DATEADD(month, -2, GETDATE())
Abe Miessler
  • 82,532
  • 99
  • 305
  • 486
9

Would something like this work for you?

SELECT * FROM FB WHERE Dte >= DATE(NOW() - INTERVAL 2 MONTH);
RAS
  • 8,100
  • 16
  • 64
  • 86
geeknik
  • 1,056
  • 8
  • 10
6

TSQL, Alternative using variable declaration. (it might improve Query's readability)

DECLARE @gapPeriod DATETIME = DATEADD(MONTH,-2,GETDATE()); --Period:Last 2 months.

SELECT 
        *
    FROM 
        FB as A
    WHERE
        A.Dte <= @gapPeriod;                               --only older records.
Arthur Zennig
  • 2,058
  • 26
  • 20
2
SELECT COUNT(1) FROM FB 
WHERE Dte > DATE_SUB(now(), INTERVAL 2 MONTH)
George SEDRA
  • 796
  • 8
  • 11
2

I use this on SQL Server:

SELECT 

DATEADD(MONTH,-2,GETDATE()) '- 2 months'

FROM MyTable
TheOx
  • 67
  • 7
0
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'
Marc
  • 924
  • 1
  • 8
  • 18