SQL的月差异

SOF*_*ser 3 sql t-sql sql-server

考虑一个日期时间字段Fld1.

如何使用SQL查询检查此值是否早于3个月前?

Ric*_*iwi 9

从您的其他问题来看,它看起来像SQL Server.

已经给出的2个SQL Server答案不是SARGable(链接) ; 他们无法利用索引.

WHERE datecolumn < DATEADD(month, -3, GETDATE())
Run Code Online (Sandbox Code Playgroud)

在3个月前构建一个日期并对其进行测试; 这将能够使用索引.此声明适用于任何DBMS.

如果您是在整个日历月之后,例如

  • 当前日期= 2011年2月24日
  • 3个月前= 2010年11月(忽略每月的某一天)
  • required = 2010年11月及之前的任何日期

WHERE datecolumn <= DATEADD(month, datediff(month, 0, getdate()) -2, 0)
Run Code Online (Sandbox Code Playgroud)