在mysql中获取更新时间戳早于1天的行



我有一个带有如下模式的表:

mysql> desc a;
+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| id            | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| created_at    | int(11)          | YES  |     | NULL    |                |
| updated_at    | int(11)          | YES  |     | NULL    |                |

updated_at中,我捕获时间戳。

现在我想用updated_at < NOW() - INTERVAL 1 DAY获取所有行。

为了做到这一点,我从上个小时添加的Fetching行中编写了以下查询:

mysql> select count(*) from a where DATE(updated_at) < DATE_SUB(NOW(),INTERVAL 1 DAY);
+----------+
| count(*) |
+----------+
|        0 |
+----------+

虽然有许多行的更新时间戳为2年,但我在这里得到了0。

不能对整数时间戳值使用DATE;必须使用FROM_UNIXTIME:将其转换为DATE

SELECT COUNT(*) 
FROM a
WHERE FROM_UNIXTIME(updated_at) < NOW() - INTERVAL 1 DAY

请注意,不必使用DATE_SUB来减去区间,只需直接编写算术运算即可。

相关内容

  • 没有找到相关文章

最新更新