SQL-Abfrage für das heutige Datum minus zwei Monate


140

Ich möchte alle Datensätze in einer Tabelle auswählen, deren Eintrittsdatum älter als 2 Monate ist.

Irgendeine Idee, wie ich das machen kann?

Ich habe noch nichts ausprobiert, aber ich bin in diesem Punkt:

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

Antworten:


285

Wenn Sie SQL Server verwenden, versuchen Sie Folgendes:

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

Basierend auf Ihrem Update wäre es:

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

25
Wenn Sie MySQL verwenden, würde dies werden:MyDate < DATE_ADD(NOW(), INTERVAL -2 MONTH)
Stefan


3

Würde so etwas für Sie funktionieren?

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

3
Dies ist eine Lösung für MySQL und er bat um eine Lösung für SQL Server. Es funktioniert nicht unter 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, Alternative mit Variablendeklaration. (Dies könnte die Lesbarkeit von Query verbessern.)

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

SELECT 
        *
    FROM 
        FB as A
    WHERE
        A.Dte <= @gapPeriod;                               --only older records.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.