Zapytanie SQL dotyczące dzisiejszej daty minus dwa miesiące


141

Chcę zaznaczyć wszystkie rekordy w tabeli, w której data ich wprowadzenia jest starsza niż 2 miesiące.

Masz jakiś pomysł, jak mogę to zrobić?

Jeszcze niczego nie próbowałem, ale jestem w tej kwestii:

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

Odpowiedzi:


286

Jeśli używasz SQL Server, spróbuj tego:

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

Na podstawie Twojej aktualizacji wyglądałoby to tak:

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

25
Jeśli używasz MySQL, wyglądałoby to następująco:MyDate < DATE_ADD(NOW(), INTERVAL -2 MONTH)
Stefan


3

Czy coś takiego zadziała dla Ciebie?

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

3
To jest rozwiązanie dla MySQL i poprosił o rozwiązanie dla SQL Server. Nie działa na 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, alternatywne użycie deklaracji zmiennej. (może to poprawić czytelność zapytania)

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

SELECT 
        *
    FROM 
        FB as A
    WHERE
        A.Dte <= @gapPeriod;                               --only older records.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.