Consulta SQL para a data de hoje menos dois meses

140

Quero selecionar todos os registros em uma tabela em que a data de entrada seja anterior a 2 meses.

Alguma idéia de como eu posso fazer isso?

Ainda não tentei nada, mas estou neste ponto:

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

Respostas:

285

Se você estiver usando o SQL Server, tente o seguinte:

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

Com base na sua atualização, seria:

SELECT * FROM FB WHERE Dte <  DATEADD(month, -2, GETDATE())
Abe Miessler
fonte
25
Se você usa o MySQL, isso se tornaria:MyDate < DATE_ADD(NOW(), INTERVAL -2 MONTH)
Stefan
3
SELECT COUNT(1) FROM FB 
WHERE Dte > DATE_SUB(now(), INTERVAL 2 MONTH)
George SEDRA
fonte
3

Algo assim funcionaria para você?

SELECT * FROM FB WHERE Dte >= DATE(NOW() - INTERVAL 2 MONTH);
geeknik
fonte
3
Esta é uma solução para o MySQL e ele pediu uma solução para o SQL Server. Não funciona no SQL Server.
Gander
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
fonte
0

TSQL, alternativa usando declaração de variável. (pode melhorar a legibilidade da consulta)

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
fonte