我的程序有一个描述生产力统计和目标的网格,其中包含时间间隔列。从SQL Server 2005数据库查询此数据,将每行的时间戳生成的数据行相加。通常,时间间隔为1小时:
|6AM-7AM | 7AM-8AM | 8AM-9AM |
Units Produced | 25 | 27 | 24 |
Unit Goal | 26 | 26 | 26 |
但是,在预计生产率为零的休息期间,用户希望在前一时间间隔中包含休息时段,同时保持目标金额。
30分钟用餐时间的例子:
|6AM-7AM | 7AM-8AM | 8AM-9AM | 9AM-10:30AM | 10:30AM-11:30AM |
Units Produced | 25 | 27 | 24 | 26 | 21 |
Unit Goal | 26 | 26 | 26 | 26 | 26 |
在8.5小时的漫长的一天(7.5个工作小时)内,还会有两个15分钟的休息时间。
我当前的实现在他们自己的表上硬编码这些小时范围值,但是这不允许在休息时间中容易地改变。根据用户的要求,“障碍”目标值是不可接受的(这是我的第一个设计)。
是应该在数据库层还是在应用层上处理,以及实施的最佳架构是什么?
答案 0 :(得分:0)
我最终在数据库层中将其作为存储过程和硬编码表进行处理。
我首先查询当天的开始和结束时间(即上午9点至下午5点)。然后,我从硬编码表中查询特定小时间隔,每行一小时,作为每个段的开始和结束时间。接下来,我得到时间戳之间的生产率计数,并将两个时间戳格式化为范围标签(单个列作为varchar,'8 AM-9AM')以显示在图表上。
它并不是非常优雅,但它可以用于我的目的。