如何比较 MySql table 和 select 中早于给定时间段的时间戳

How to compare timestamps in MySql table and select older than given time period

时间戳和日期格式总是让我有点困惑。假设我们有一个 MySql table,其中日期列采用时间戳格式。

我想问一下如何找到早于(例如 1 周)的所有 table 行的最简单或最简单的方法是什么。

如果您想考虑从现在开始的一周前,包括使用 date_sub 函数的 hour-min-sec,您可以将其作为

mysql> select date_sub(now(), interval 1 week) as d ;
+---------------------+
| d                   |
+---------------------+
| 2015-05-26 15:33:15 |
+---------------------+
1 row in set (0.01 sec)

所以查询变为

select * from table_name
where date_column < date_sub(now(), interval 1 week)

现在,如果您只想考虑日期部分,那就是

where date(date_column) < date_sub(curdate(), interval 1 week)

这种方法的问题是,对于大型数据集,即使 date_column 被索引,它也无法使用它,因此会出现性能问题。

所以从现在起一周的午夜获取日期时间值作为

mysql> select date_format(date_sub(curdate(), interval 1 week),'%Y-%m-%d %H:%i:%s') as d ;
+---------------------+
| d                   |
+---------------------+
| 2015-05-26 00:00:00 |
+---------------------+

where 查询变为

select * from table_name
where 
date_column < date_format(date_sub(curdate(), interval 1 week),'%Y-%m-%d %H:%i:%s')