【问题标题】:mysql 5.5.50 Calculate one day multiple events to onemysql 5.5.50 计算一天多事件为一
【发布时间】:2016-09-22 14:28:27
【问题描述】:

我的想法有问题,我必须请人帮忙。 我创建了简单的工作时间跟踪系统,我可以使用该代码管理所有其他事情,但我现在无法弄清楚如何计算以下数据。

拳头,我有几张桌子,一张存放四样东西。

index | who | timestamp           | what
1     | 1   | 2016-09-21 08:00:00 | Work
2     | 2   | 2016-09-21 08:01:00 | Work
3     | 1   | 2016-09-21 10:00:00 | Bin
4     | 2   | 2016-09-21 10:00:00 | Bin
5     | 1   | 2016-09-21 10:15:00 | Bout
6     | 2   | 2016-09-21 10:17:00 | Bout
7     | 2   | 2016-09-21 13:00:00 | Bin
8     | 1   | 2016-09-21 13:00:00 | Bin
9     | 1   | 2016-09-21 13:30:00 | Bout
10    | 2   | 2016-09-21 13:30:00 | Bout
11    | 2   | 2016-09-21 15:58:00 | Home
12    | 1   | 2016-09-21 16:05:00 | Home

我可以很好地计算工作和家庭之间的时间,并为正确的人提供正确的价值。

但我现在被那些休息时间困住了。

我需要计算每人所有可能的休息时间,这样就可以计算出每人休息所花费的总时间。

所以当询问第 1 个人信息时,我需要类似以下的答案:

Who | Time     | Breaktime | Working time
1   | 08:05:00 | 00:45:00  | 07:20:00

或者,当询问特定日期时,也许所有人都可以来到同一页面......

Who | Time     | Breaktime | Working time
1   | 08:05:00 | 00:45:00  | 07:20:00
2   | 07:57:00 | 00:47:00  | 07:10:00

事件总是成对的。工作 -> 家和垃圾桶 -> 布特。 是的,有更多的人,每人的刹车时间可能会更多。

这可能是一个糟糕的演示,对此表示抱歉(NooB)。我希望我能提供那么多信息,因为有人可以提供帮助。但是问有没有什么要问的。

这是我在工作场所解决一天总时间时使用的代码。

SELECT TIMEDIFF(  
(SELECT timestamp FROM `stamps` WHERE (who like '1' and  DATE (timestamp) like '2016-09-21' and what like 'Home')),
(SELECT timestamp FROM `stamps` WHERE (who like '1' and  DATE (timestamp) like '2016-09-21' and what like 'Work'))
)

但我不能将它用于多个事件。

【问题讨论】:

  • 那么你自己做了什么来尝试这个?这不是代码编写服务,我们不是来为您完成工作的。你展示你的尝试,我们(也许)会尝试帮助修复它。
  • 感谢修复我的问题 Machavity。现在我下次可以做得更好。
  • Marc B. 我只是在想是否有人可以帮助我解决我的大脑圈问题。我尝试使用与 Work -> Home 事件相同的 sql 示例。我还不知道如何将其添加到评论中。我必须回答吗?
  • 不要将代码发布到 cmets。这是不可读的。编辑您的问题。
  • 我想我从其他问题中找到了一些帮助......如果我让它工作,我会告诉答案。

标签: mysql sql date datetime time


【解决方案1】:

这就是我发现的。也许不是很好,但它有效 =)。

$break = mysqli_query($conn,"SELECT what, timestamp FROM stamps WHERE (who like '$id' and  DATE (timestamp) like '$day' and what like 'B%') ORDER BY timestamp");
 while($row = mysqli_fetch_array($break))
 {
  if ( $row['what'] == "Bin" )
   $start = strtotime( $row['timestamp'] );
  else { $stop = strtotime( $row['timestamp'] );
   $hours += ( $stop - $start );
   }
 }
$btime = gmdate('H:i:s', floor($hours));

$btime 给出 00:00:00 样式结果。

【讨论】:

  • 在必须要问的时候总是有帮助的。当我问起时,我开始思考不同的=)。很多时候,当有人至少在倾听时,它会有所帮助。
猜你喜欢
  • 2021-01-03
  • 2016-11-02
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多