在 MySQL 数据库中,我们经常需要查询固定时间间隔的数据。比如我们要查询最近一个星期的数据,或者最近一个月的数据。这时候,我们就需要用到 MySQL 的一些时间函数。
SELECT * FROM table_name WHERE created_at BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW();
上面的 SQL 语句就是查询最近一个星期的数据。其中,DATE_SUB 函数用来计算当前时间减去一个时间间隔后的时间,NOW 函数用来获取当前时间。BETWEEN 则表示在两个时间之间。
SELECT * FROM table_name WHERE created_at BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW();
如果我们要查询最近一个月的数据,我们只需要把 INTERVAL 的参数改成 1 MONTH,其他的保持不变就可以了。
除了 NOW 函数,MySQL 还有一些其他的时间函数,比如 DATE_FORMAT 函数可以把日期格式化为字符串,DATE_ADD 函数可以在一个时间上加上一个时间间隔。
SELECT DATE_FORMAT(created_at, '%Y-%m-%d') AS date, COUNT(*) AS cnt FROM table_name WHERE created_at BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW() GROUP BY date;
有时候我们需要按照日期统计数据,这时候可以使用 DATE_FORMAT 把日期格式化为我们需要的格式,再使用 GROUP BY 按照日期进行分组。上面的 SQL 语句就是查询最近一个星期每天的数据量。
总之,MySQL 的时间函数非常强大,熟练掌握可以极大地提高查询效率。