我正在做一个项目,我需要使用RFID阅读器计算换档时间。该设备将每毫秒扫描RFID标签并将其保存在缓冲区中。我使用java编程从读取器获取这些RFID细节并在POstgreSQL DB中更新。我成功地将从读取器获取的数据更新到postgresql数据库。我在计算Night Shit时遇到问题。
早晨&可以使用postgresql数据库中的时间戳成功计算下午班次,因为它在日期范围内,但夜班计算让我感到困惑,因为班次是从第一天开始到第二天结束。例如夜班于2016年6月12日开始,于2016年6月13日结束。
我不知道如何查询数据库。
请提前帮助谢谢。
rfid_id | emp_id| User_name| access_time
1076 | 13 | Username | 2016-07-12 21:08:26.796
1077 | 13 | Username | 2016-07-12 21:08:27.139
1078 | 13 | Username | 2016-07-12 21:08:27.342
1079 | 13 | Username | 2016-07-12 21:08:27.358
1080 | 13 | Username | 2016-07-12 21:08:27.389
1081 | 13 | Username | 2016-07-12 21:08:27.436
这是样本数据。 每秒钟RFID阅读器都会扫描员工标签。
答案 0 :(得分:0)
我建议根据班次的开始或结束时间以及班次的长度进行查询。任何转变都是一致的。例如,对于从7月28日20:00开始的8小时轮班,查询将是:
SELECT *
FROM
WHERE access_time BETWEEN to_timestamp('20160728 20:00', 'YYYYMMDD HH24:MI')
AND to_timestamp('20160728 20:00', 'YYYYMMDD HH24:MI') + interval '8 hours'