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


141

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

Будь-яка ідея, як я можу це зробити?

Я ще нічого не пробував, але зараз на цьому:

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

Відповіді:


286

Якщо ви використовуєте SQL Server, спробуйте це:

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

Виходячи з вашого оновлення, це було б:

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

25
Якщо ви використовуєте 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.
Гендер

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.