家里用的智能冰箱、空调这些电器,现在都能联网记录使用数据了。像我家那台冰箱,每天几点开门、温度调了多少,后台都存着。想查某天的数据?就得靠SQL查日期格式。
日期字段长啥样
数据库里时间通常存成 datetime 或 date 类型,比如 2024-05-17 08:30:22 这种格式最常见。你想看昨天冰箱的运行记录,就得让SQL认得这个格式。
按日期查数据其实不难
比如查5月16号全天的数据,语句可以这么写:
SELECT * FROM fridge_log WHERE record_time >= '2024-05-16 00:00:00' AND record_time < '2024-05-17 00:00:00';
如果字段是纯 date 类型,只存了 2024-05-16,那就简单点:
SELECT * FROM fridge_log WHERE record_date = '2024-05-16';
用函数更省事
MySQL里可以用 DATE() 函数抽取出日期部分,忽略时间:
SELECT * FROM ac_usage WHERE DATE(log_time) = '2024-05-15';
要是想查最近三天的空调耗电记录,可以用 INTERVAL:
SELECT * FROM ac_usage WHERE log_time >= NOW() - INTERVAL 3 DAY;
格式转换也常用
有些系统导出的时间是 20240516 这种数字格式,查的时候得转一下。MySQL用 STR_TO_DATE:
SELECT * FROM washer_log WHERE log_date = STR_TO_DATE('20240516', '%Y%m%d');
反过来,想把日期显示成“5月16日”这种可读格式,可以用 DATE_FORMAT:
SELECT DATE_FORMAT(log_time, '%m月%d日') AS 显示日期, temp FROM fridge_log LIMIT 5;
这样出来的结果看着就顺眼多了,适合做家电使用报告。
实际操作时,先搞清楚你家设备后台用的是哪种时间格式,再选合适的查询方式。多试几次,慢慢就熟了。