因此,我正在为我的工作设计一个时间表系统,基本上我想知道mysql是否有一种方法可以做这样的事情:
|Monday |tuesday|wendsday|total
|Dan |5am-7am |7am-6pm|6am-11am|
11am-2pm| |2pm-7pm |
5pm-12am|
如果需要的话,我可以在同一单元格中的每个人每天输入多个轮班,而不是重复数次如下所示的名称:
Dan|5-4|
Dan|6-8|
如果有一个函数可以计算多个移位的单元格内的总时间
发布于 2017-05-15 18:52:50
有一种方法(将数据表示为字符串),但您不会想这样做--您将丢失所有的计算、搜索等。您不应该试图将数据库中的数据精确地表示为纸面上的数据。我会做一张这样的桌子
ShiftID|Person|StartTime|EndTime
在创建日期时间类型的StartTime & EndTime列时,不仅要存储班次开始的HH:mm,还要存储当天。当你有一个从一天开始到下一天结束的轮班时,这是很有帮助的,比如从2017-05-15 :00开始,到2017-05-16 02:00星期二结束。
您只能使用MySQL DATE()函数从该字段提取日期,并仅选择在这一天开始或结束的实体。要计算移位的持续时间,可以使用MySQL函数TIMESTAMPDIFF(),如果是星期一、星期二等,甚至可以使用DAYOFWEEK()获取。
关于复制这个人的名字-我会做另一个表,它将使用户与他们的数据匹配到ID --列Person中的使用ID,但是对于初学者,如果您的数据不是很大,如果速度不是问题,如果错误错误(比如Den而不是Dan)不是问题.您可以直接在这个表中使用这个名称。
在像这样的表中存储数据之后,您可以用HTML (或打印)表示它。
https://stackoverflow.com/questions/43986511
复制相似问题