时间戳和日期格式总是让我有些困惑。假设我们有一个MySql表,其中date列为时间戳格式。
我想问一下如何查找所有早于(例如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进行索引,也将无法使用它,从而导致性能问题。
因此,从现在开始的一个星期的午夜起获取datetime值,如下所示
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 |
+---------------------+
以及查询变为何处
select * from table_name
where
date_column < date_format(date_sub(curdate(), interval 1 week),'%Y-%m-%d %H:%i:%s')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句