应直接在SQL标签页写WHERE条件,因phpMyAdmin可视化筛选不支持BETWEEN、函数或范围比较;DATETIME字段推荐左闭右开区间,如created_at >= '2023-01-01' AND created_at < '2024-01-01'。
直接在SQL标签页里写WHERE条件,别用可视化筛选
phpmyadmin的表数据页顶部有“筛选”输入框,但它对日期字段支持极差——只能匹配完整日期字符串(如 '2023-01-01'),不支持 between、函数或范围比较。想查“2023年全年订单”,必须切到 sql 标签页手动写查询。
日期字段类型决定写法,注意DATETIME和DATE的区别
如果字段是 DATETIME(如 created_at),直接用 BETWEEN 容易漏掉当天最后几秒的数据;推荐用左闭右开区间:
WHERE created_at >= '2023-01-01' AND created_at- 若字段是
DATE类型(如order_date),BETWEEN '2023-01-01' AND '2023-12-31'是安全的 - 别用
STR_TO_DATE()或DATE()包裹字段——会阻止索引使用,查得慢
时区问题常被忽略,查不到数据第一反应该看这个
MySQL服务器时区可能和你的本地时间不一致。执行 SELECT NOW(), @@time_zone; 确认当前时区。常见坑:
- 服务器设为
+00:00(UTC),但你按北京时间(+08:00)填条件,结果查不到 - phpMyAdmin界面右上角显示的“当前时间”是浏览器本地时间,和数据库无关
- 稳妥做法:统一用 UTC 时间写条件,或在查询前加
SET time_zone = '+08:00';
带变量的查询别手敲,用phpMyAdmin的占位符功能
要反复查不同月份,不用每次改SQL。phpMyAdmin支持 @variable 占位符:
- 先执行
SET @start = '2023-04-01'; SET @end = '2023-06-30'; - 再执行
SELECT * FROM orders WHERE order_date BETWEEN @start AND @end; - 注意:
@变量只在当前页面会话有效,刷新就失效
真正容易卡住的不是语法,是没意识到 phpMyAdmin 里的日期值默认不带时分秒,而 DATETIME 字段存的是精确到秒的时间戳——这个细节一错,查半天都查不到数据。
立即学习“PHP免费学习笔记(深入)”;



















