应直接在sql标签页写where条件,因phpmyadmin可视化筛选不支持between、函数或范围比较;datetime字段推荐左闭右开区间,如created_at >= '2023-01-01' and created_at直接在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免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











