时间戳和日期格式总是让我感到困惑。假设我们有一个MySql表,其中date列是时间戳格式。
我想询问如何找到比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')