SQL-запрос на сегодняшний день минус два месяца

Я хочу выбрать все записи в таблице, где их дата записи старше двух месяцев.

Любая идея, как я могу это сделать?

Я еще ничего не пробовал, но я нахожусь здесь:

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

Ответ 1

Если вы используете SQL Server, попробуйте это:

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

На основе вашего обновления это будет:

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

Ответ 2

Вы не указали свою СУБД, но это было бы решением стандартного ANSI SQL

SELECT * 
FROM MyTable
WHERE MyDate < CURRENT_DATE - INTERVAL '2' MONTH

Ответ 3

SELECT COUNT(1) FROM FB 
WHERE Dte > DATE_SUB(now(), INTERVAL 2 MONTH)

Ответ 4

Что-то вроде этой работы для вас?

SELECT * FROM FB WHERE Dte >= DATE(NOW() - INTERVAL 2 MONTH);

Ответ 5

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'

Ответ 6

TSQL, альтернативный вариант с использованием объявления переменных. (это может улучшить читаемость запросов)

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

SELECT 
        *
    FROM 
        FB as A
    WHERE
        A.Dte <= @gapPeriod;                               --only older records.