MYSQL select 如何在日期字段相差两年的情况下产生结果

MYSQL how select results where date fields are different by two years

我有两列,一列是 date_created,一列是 date_expired。我怎样才能得到相差 2 年以上的结果?我们知道每个证书的有效期只有 2 年。

这个例子表明证书已经过期

SELECT date_created, date_expired from cert_table

结果:

2013-10-10 18:32:54, 2015-10-10 14:33:28

假设您的列的数据类型是日期(实际上 应该是!),以下将完成这项工作:

SELECT ... FROM cert_table WHERE DATE_ADD(date_created, INTERVAL 2 YEAR)  < date_expired

要获取有关日期操作的更多信息,请查看 MySQL Reference

SELECT date_created, date_expired 
FROM  cert_table
WHERE DATE_ADD(date_created, INTERVAL 2 YEAR) <= date_expired

或者我猜

SELECT date_created, date_expired 
FROM  cert_table
WHERE DATE_ADD(date_created, INTERVAL 2 YEAR) <= NOW()

UPDATE 因此,如果您将 <= 切换为 >=,则意味着您正在搜索 valid 证书我上面的查询正在寻找过期的查询。 :-)

SELECT date_created, date_expired 
FROM  cert_table
WHERE DATE_ADD(date_created, INTERVAL 2 YEAR) >= date_expired