gpt4 book ai didi

php - MySQL-更改一行的时间值以匹配同一表的另一行的时间值

转载 作者:行者123 更新时间:2023-11-30 01:35:38 25 4
gpt4 key购买 nike

我有几位顾问记录他们的工作开始/结束时间。因为他们有两小时的最低费用,所以我需要确保正确计算他们的工作时间。当他们在同一站点上连续执行作业且作业之间的空闲时间在 15 到 60 分钟之间时,就会出现问题。

以下是我的示例表的查询结果,按cid、job_date、start_time排序。对于此特定示例,所有作业时间条目均针对同一天:

 id  job_num    cid job_date    start_time           end_time
19 130513-20 6 05/13/2013 2013-05-13 13:30:00 2013-05-13 16:30:00
10 130513-10 7 05/13/2013 2013-05-13 11:00:00 2013-05-13 13:00:00
16 130513-17 13 05/13/2013 2013-05-13 14:45:00 2013-05-13 15:30:00
15 130513-16 16 05/13/2013 2013-05-13 14:45:00 2013-05-13 16:15:00
18 130513-19 34 05/13/2013 2013-05-13 11:15:00 2013-05-13 12:15:00
8 130513-08 44 05/13/2013 2013-05-13 12:00:00 2013-05-13 14:30:00
6 130513-06 47 05/13/2013 2013-05-13 11:00:00 2013-05-13 12:00:00
9 130513-09 47 05/13/2013 2013-05-13 12:00:00 2013-05-13 12:30:00
14 130513-15 47 05/13/2013 2013-05-13 14:30:00 2013-05-13 15:15:00
3 130513-03 50 05/13/2013 2013-05-13 09:00:00 2013-05-13 10:45:00
7 130513-07 50 05/13/2013 2013-05-13 11:00:00 2013-05-13 12:00:00
11 130513-11 50 05/13/2013 2013-05-13 13:00:00 2013-05-13 14:30:00
17 130513-18 50 05/13/2013 2013-05-13 15:00:00 2013-05-13 16:15:00
2 130513-02 52 05/13/2013 2013-05-13 09:30:00 2013-05-13 10:30:00
4 130513-04 52 05/13/2013 2013-05-13 10:30:00 2013-05-13 11:00:00
5 130513-05 52 05/13/2013 2013-05-13 11:00:00 2013-05-13 13:00:00
12 130513-12 52 05/13/2013 2013-05-13 14:00:00 2013-05-13 14:45:00
13 130513-13 52 05/13/2013 2013-05-13 15:00:00 2013-05-13 17:00:00
20 130513-21 61 05/13/2013 2013-05-13 11:00:00 2013-05-13 12:00:00
1 130513-01 70 05/13/2013 2013-05-13 14:30:00 2013-05-13 15:15:00

我想要完成的是更新特定行(job_num)的结束时间,使其等于同一顾问(cid)查询中下一个job_num的结束时间,但前提是差异(第一个作业的结束时间和下一个作业的开始时间之间的空闲时间 <= 30 分钟。基本上,我想将空闲时间添加到比较中第一个作业的 end_time 中。

例如:

 id  job_num    cid job_date    start                end                
3 130513-03 50 05/13/2013 2013-05-13 09:00:00 2013-05-13 10:45:00 <-- original
7 130513-07 50 05/13/2013 2013-05-13 11:00:00 2013-05-13 12:00:00
11 130513-11 50 05/13/2013 2013-05-13 13:00:00 2013-05-13 14:30:00 <-- original
17 130513-18 50 05/13/2013 2013-05-13 15:00:00 2013-05-13 16:15:00
...
12 130513-12 52 05/13/2013 2013-05-13 14:00:00 2013-05-13 14:45:00 <-- original
13 130513-13 52 05/13/2013 2013-05-13 15:00:00 2013-05-13 17:00:00

成为:

 3   130513-03  50  05/13/2013  2013-05-13 09:00:00  2013-05-13 11:00:00  <-- changed
7 130513-07 50 05/13/2013 2013-05-13 11:00:00 2013-05-13 12:00:00
11 130513-11 50 05/13/2013 2013-05-13 13:00:00 2013-05-13 15:00:00 <-- changed
17 130513-18 50 05/13/2013 2013-05-13 15:00:00 2013-05-13 16:15:00
...
12 130513-12 52 05/13/2013 2013-05-13 14:00:00 2013-05-13 15:00:00 <-- changed
13 130513-13 52 05/13/2013 2013-05-13 15:00:00 2013-05-13 17:00:00

我将如何进行此更改?我已经看到使用临时表和变量来解决类似问题的解决方案,这些解决方案非常适合检查时间差异,但没有一个可以适应(以我对 MySQL 查询的有限知识)我的特定问题。我还将这个问题标记为 PHP,因为也许在 PHP 中执行此操作会更简单。

任何帮助将不胜感激!

最佳答案

我假设您正在使用 php 格式化开始时间和结束时间,然后插入到数据库表中。

$start = date("Y-m-d H:i:s",time());
$query = "select * from table name where cid = $cid and UNIX_TIMESTAMP($start) - UNIX_TIMESTAMP(end_time) <= 1800";
mysqli_query($con,$query);

if ($result=mysqli_query($con,$query))
{
$rowcount=mysqli_num_rows($result);

if($rowcount > 1)
{
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);

query2 = "update tablename set end_time = '$start' where id = '$row['id']'";

query3 = "insert into tablename(cid,date,start_time,end_time) values($cid,$date,$start,$end)";


}else{

//do the insert as such
query2 = "insert into tablename(cid,date,start_time,end_time) values($cid,$date,$start,$end)";

}

mysqli_free_result($result);
}

关于php - MySQL-更改一行的时间值以匹配同一表的另一行的时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16931903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com