【问题标题】:Display record older than 3 months in sql在sql中显示超过3个月的记录
【发布时间】:2012-12-17 10:08:40
【问题描述】:

我需要创建一个 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 个月 的记录,但它没有。

【问题讨论】:

  • 你能提供表格的结构吗?
  • 日期格式设置是什么?执行 select getdate() 时的格式是什么?

标签: mysql sql


【解决方案1】:

试试这个

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

【讨论】:

  • 这与 OP 的要求相反。您的解决方案将返回表中小于正好 3个月的所有记录,而问题要求的所有记录早于 3个月.您只需将>= 更改为<
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多