12 Stimmen

Anzeige von Datensätzen älter als 3 Monate in SQL

Ich muss ein SSIS-Paket erstellen, das die Datensätze in einer Tabelle(T1) durchläuft, die älter als 3 Monate sind (basierend auf ALERT_TIMESTAMP) und sie in eine andere Tabelle(T2) verschiebt

Meine Abfrage lautet:

SELECT * FROM T1
WHERE (DATEDIFF([month], ALERT_TIMESTAMP, GETDATE()) > 3)

Die Spalte Alert_timestamp ist im Format Datetime. z.B.: '26.10.2012 00:00:00'

Wenn ich die Abfrage ausführe, sollten alle Datensätze angezeigt werden, die älter als 3 Monate sind, aber das passiert nicht.

19voto

softsdev Punkte 1478

Versuchen Sie dies

select * from `table` where `yourfield` >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH)

Für Tage, Jahre siehe unten als Beispiel.

DATE_SUB(CURDATE(), INTERVAL 15 DAY) /*Um Datensätze für bestimmte Tage zu erhalten*/

DATE_SUB(CURDATE(), INTERVAL 1 YEAR) /* um Datensätze für bestimmte Jahre zu erhalten */

Für Anand, Abfrage

ZWISCHEN DATE_SUB( CURDATE( ) ,INTERVAL 6 MONATE ) UND DATE_SUB( CURDATE() ,INTERVAL 3 MONATE ) 
/* Für den Abruf von Datensätzen zwischen den letzten 6 Monaten und den letzten 3 Monaten */

2voto

fancyPants Punkte 49011

Was du gepostet hast, ist nicht MySQL. Wenn du MS SQL Server verwendest, solltest du die ABS() Funktion verwenden.

SELECT   * FROM        T1
WHERE     ABS(DATEDIFF([month], ALERT_TIMESTAMP, GETDATE())) > 3

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X