You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino考勤系统MySQL表改造:拆分日期与时间字段需求

解决方案:拆分MySQL考勤表的日期与时间字段

没问题,我帮你调整表结构,把原来的timestamp字段拆成独立的日期和时间字段,完全适配你的Arduino考勤系统需求。

修改后的表创建语句

CREATE TABLE `tbl_attendance` (
  `att_id` int(11) NOT NULL AUTO_INCREMENT, -- 建议加上自增属性,不用手动维护ID
  `rfid_uid` varchar(255) NOT NULL,
  `punch_date` date NOT NULL, -- 单独存储考勤日期(格式:YYYY-MM-DD)
  `punch_time` time NOT NULL, -- 单独存储考勤时间(格式:HH:MM:SS)
  PRIMARY KEY (`att_id`)
);

字段说明

  • punch_date:用date类型专门存储年-月-日,比timestamp更贴合你只存日期的需求,避免冗余的时间信息。
  • punch_time:用time类型存储时:分:秒,精准拆分时间部分,方便后续按时间段统计考勤。

Arduino端数据插入要点

当你的Arduino读取到RFID卡片时,需要先获取当前的准确日期和时间(推荐用DS3231实时时钟模块,掉电也能保持时间;如果设备联网,也可以通过NTP同步网络时间),然后把日期和时间分别组装成符合MySQL要求的字符串:

  • 日期格式必须是 YYYY-MM-DD(比如 2024-05-20)
  • 时间格式必须是 HH:MM:SS(比如 14:35:22)

然后构造插入SQL语句,示例如下:

INSERT INTO tbl_attendance (rfid_uid, punch_date, punch_time)
VALUES ('1A2B3C4D', '2024-05-20', '14:35:22');

额外注意事项

  • 如果用DS3231模块,初始化时要校准一次时间,确保后续读取的日期时间准确。
  • 插入数据前一定要验证格式,比如日期不能是2024/05/20这种斜杠分隔的,必须用横杠,否则MySQL会报错。
  • 如果需要按日期+时间排序或者查询,直接用punch_date和punch_time组合即可,效果和原来的timestamp一致,但结构更清晰。

内容的提问来源于stack exchange,提问作者Salman Mahmood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:33:51