MySQL如何根据日期筛选数据

发布于:2026-01-14 10:2212人浏览
在MySQL中,根据日期筛选数据时,需要解决日期格式不一致的问题,本文介绍了四种常见场景的解决方案:基本日期筛选、处理不同日期格式、使用日期函数筛选以及处理时间部分

MySQL中根据日期筛选数据时,经常会遇到日期格式不一致的问题。以下是几种常见场景的解决方案

1. 基本日期筛选

1
2
3
4
5
6
7
-- 筛选特定日期的数据(假设date_column是DATE或DATETIME类型)
SELECT * FROM table_name
WHERE date_column = '2023-10-25';
 
-- 筛选日期范围内的数据
SELECT * FROM table_name
WHERE date_column BETWEEN '2023-10-01' AND '2023-10-31';

2. 处理不同日期格式

1
2
3
4
5
6
7
-- 将字符串转为日期(适用于各种格式)
SELECT * FROM table_name
WHERE STR_TO_DATE(date_string_column, '%Y-%m-%d') = '2023-10-25';
 
-- 或者使用DATE函数(适用于DATETIME/TIMESTAMP)
SELECT * FROM table_name
WHERE DATE(datetime_column) = '2023-10-25';

3. 日期函数筛选

1
2
3
4
5
6
7
8
9
10
11
12
-- 筛选今天的数据
SELECT * FROM table_name
WHERE DATE(date_column) = CURDATE();
 
-- 筛选本月数据
SELECT * FROM table_name
WHERE YEAR(date_column) = YEAR(CURDATE())
AND MONTH(date_column) = MONTH(CURDATE());
 
-- 筛选最近7天的数据
SELECT * FROM table_name
WHERE date_column >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);

4. 处理时间部分

1
2
3
4
5
6
7
-- 忽略时间部分进行比较
SELECT * FROM table_name
WHERE DATE(datetime_column) = '2023-10-25';
 
-- 按时间部分筛选
SELECT * FROM table_name
WHERE TIME(datetime_column) BETWEEN '09:00:00' AND '17:00:00';

总结


相关文章
    最新文章
    热门标签