如何比较MySql表中的时间戳并选择早于给定时间段的时间戳

时间:2015-06-02 09:54:28

标签: mysql date timestamp date-format

时间戳和日期格式总是让我感到困惑。假设我们有一个MySql表,其中date列是时间戳格式。

我想询问如何找到比1周更早的所有表行的最简单或最简单的方法。

1 个答案:

答案 0 :(得分:1)

如果您想从现在开始考虑一周后使用hour-min-sec使用date_sub功能,可以将其视为

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')