2012-12-17 8 views
9

muszę utworzyć pakiet SSIS, który przejdzie przez zapisy w jeden table(T1) starsze niż 3 miesiące (w oparciu o ALERT_TIMESTAMP) i przenieść je do innego table(T2)rekord Wyświetlacz starszy niż 3 miesiące w SQL

mojej kwerendy jest:

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

Alert_timestamp kolumna jest w formacie Datetime. np .: '10/26/2012 12:00:00 AM'

Po uruchomieniu zapytania powinien wyświetlić wszystkie rekordy starsze niż 3 miesiące, ale tak się nie dzieje.

+0

u może dostarczyć strukturę tabel? – user7282

+0

Jakie jest ustawienie formatu daty? Jaki jest format podczas uruchamiania select getdate()? – GeorgesD

Odpowiedz

15

Spróbuj

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

dni, lata patrz poniżej na przykład.

DATE_SUB(CURDATE(), INTERVAL 15 DAY) /*For getting record specific days*/ 

DATE_SUB(CURDATE(), INTERVAL 1 YEAR) /*for getting records specific years*/ 


Dla Anand, zapytanie

BETWEEN DATE_SUB(CURDATE() ,INTERVAL 6 MONTH) AND DATE_SUB(CURDATE() ,INTERVAL 3 MONTH) 
/* For Getting records between last 6 month to last 3 month 
+0

Dzięki @Fahim Parkar – softsdev

+0

Jest to przeciwieństwo tego, o co prosił OP. Twoje rozwiązanie zwróci wszystkie rekordy w tabeli, które są mniejsze niż _ lub _takie 3 miesiące, podczas gdy pytanie dotyczy wszystkich rekordów _older_ niż 3 miesiące. Trzeba tylko zmienić '> =' z '<' –

2

To, co napisałeś, nie jest MySQL. Zakładając, że korzystasz z MS SQL Server, powinieneś użyć funkcji ABS().

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