考虑日期时间字段Fld1
。
如何使用SQL查询检查此值是否早于3个月前?
答案 0 :(得分:9)
从其他问题看,它看起来像SQL Server。
已经给出的2个SQL Server答案不是SARGable (link);他们无法利用指数。
WHERE datecolumn < DATEADD(month, -3, GETDATE())
3个月前构建一个日期并对其进行测试;这将能够使用索引。此声明适用于任何DBMS。
如果您在整个日历月之后,例如
的
WHERE datecolumn <= DATEADD(month, datediff(month, 0, getdate()) -2, 0)
答案 1 :(得分:1)
SQL Server:
select * from table where DATEDIFF(m, dateColumn, GETDATE()) < 3
答案 2 :(得分:0)
答案 3 :(得分:0)
<强>的MySQL 强>
SELECT * FROM table WHERE Fld1 <= DATE_SUB(CURDATE(), INTERVAL 3 MONTH)
这将选择超过3个月的元素。如果您想要比三个月前更新的元素,只需将<=
更改为>=
。