Query SQL per la data odierna meno due mesi


141

Voglio selezionare tutti i record in una tabella in cui la loro data di entrata è più vecchia di 2 mesi.

Qualche idea su come posso farlo?

Non ho ancora provato nulla ma sono su questo punto:

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

Risposte:


286

Se si utilizza SQL Server, provare questo:

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

In base al tuo aggiornamento sarebbe:

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

25
Se usi MySQL questo diventerebbe:MyDate < DATE_ADD(NOW(), INTERVAL -2 MONTH)
Stefan,

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

3

Qualcosa del genere funzionerebbe per te?

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

3
Questa è una soluzione per MySQL e ha chiesto una soluzione a SQL Server. Non funziona su 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, alternativa usando la dichiarazione variabile. (potrebbe migliorare la leggibilità delle query)

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

SELECT 
        *
    FROM 
        FB as A
    WHERE
        A.Dte <= @gapPeriod;                               --only older records.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.