PostgreSQL夜班时间计算

时间:2016-07-30 14:55:03

标签: sql postgresql postgresql-9.4

我正在做一个项目,我需要使用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阅读器都会扫描员工标签。

1 个答案:

答案 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'