11

我需要创建一个 SSIS 包,它将在table(T1)超过3 个月(基于ALERT_TIMESTAMP)中遍历记录并将它们移动到另一个table(T2)

我的查询是:

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

Alert_timestamp列是Datetime格式。例如:'10/26/2012 12:00:00 AM'

当我运行查询时,它应该显示所有早于3 个月的记录,但事实并非如此。

4

2 回答 2

17

试试这个

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

例如,对于天、年,请参见下文。

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

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


对于 Anand,查询

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
于 2012-12-17T10:19:30.403 回答
2

您发布的不是 MySQL。假设您使用的是 MS SQL Server,您应该使用该ABS()函数。

SELECT   * FROM        T1
WHERE     ABS(DATEDIFF([month], ALERT_TIMESTAMP, GETDATE())) > 3
于 2012-12-17T10:18:19.040 回答