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


144

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

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

Я еще ничего не пробовал, но придерживаюсь этого мнения:

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

Ответы:


293

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

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

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

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

26
Если вы используете MySQL, это будет:MyDate < DATE_ADD(NOW(), INTERVAL -2 MONTH)
Стефан


3

Хотели бы вы, чтобы это работало?

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

3
Это решение для MySQL, и он попросил решение для SQL Server. Это не работает на 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'

0

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

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

SELECT 
        *
    FROM 
        FB as A
    WHERE
        A.Dte <= @gapPeriod;                               --only older records.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.