Database 我应该为班次存储UTC时间戳还是本地时间

Database 我应该为班次存储UTC时间戳还是本地时间,database,postgresql,timezone,time-and-attendance,Database,Postgresql,Timezone,Time And Attendance,我正在开发一个功能,该功能将计算出有多少工人在值班,并为他们的轮班打卡(或未打卡) 工作人员“打卡”和“打卡”以及这些事件的时间戳将以UTC格式存储,因为这似乎是最多出现的建议 但是班次是在固定的当地时间开始的,因此,例如,一个班次将始终在07:00开始,而不管夏令时如何,并在例如14:00结束 轮班工人被“分配”到轮班 第一个要求是能够知道“此时”有多少工人在值班(打卡上班)——一种状态检查 第二个要求是能够获得一份过去一天的报告,例如一名工人(该工人是否在整个班次值班、是否迟到、他们是否迟到

我正在开发一个功能,该功能将计算出有多少工人在值班,并为他们的轮班打卡(或未打卡)

工作人员“打卡”和“打卡”以及这些事件的时间戳将以UTC格式存储,因为这似乎是最多出现的建议

但是班次是在固定的当地时间开始的,因此,例如,一个班次将始终在07:00开始,而不管夏令时如何,并在例如14:00结束

轮班工人被“分配”到轮班

第一个要求是能够知道“此时”有多少工人在值班(打卡上班)——一种状态检查

第二个要求是能够获得一份过去一天的报告,例如一名工人(该工人是否在整个班次值班、是否迟到、他们是否迟到以及是否要求支付加班费等)

因此,不要假设所有东西都总是在一个时区中,而是将时区与班次定义一起存储在数据库中(班次记录可能包含本地开始时间、结束时间和本地时区“名称”)

问题1:建议使用什么格式存储本地时区?是否有一种存储班次开始/结束时间的方法,允许我编写SQL查询,将这些时间与提供的UTC时间进行比较


问题2:还有其他建议吗?我是否应该将时钟输入/输出时间存储为本地时间,以便与轮班开始/结束时间相同?或者我应该做一些魔术,把所有东西都存储为UTC时间。。。但如果班次存储为“2:00 UTC”,如何计算当前本地时间班次的开始时间。。。。将其转换为当地时间需要始终保持不变,例如当地时间7:00,无论DST如何……

首先,要了解日期时间几乎不受时间的影响。各种数据库产品的数据类型、定义和行为差异很大