如何比较 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')
时间戳和日期格式总是让我有点困惑。假设我们有一个 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')