Php 检查最新更新数据,并仅在另一个查询中运行更新日期
我正在使用考勤管理系统,从指纹扫描仪接收数据。下面显示的是系统的结构 出席人数表:Php 检查最新更新数据,并仅在另一个查询中运行更新日期,php,mysql,Php,Mysql,我正在使用考勤管理系统,从指纹扫描仪接收数据。下面显示的是系统的结构 出席人数表: EnrolledID Date Time 2603 2019-08-01 04:29:52 2087 2019-08-01 04:46:12 2539 2019-08-01 05:44:31 1310 2019-08-01 05:48:25 2088 2019-08-01 05:48:32 112 2019-0
EnrolledID Date Time
2603 2019-08-01 04:29:52
2087 2019-08-01 04:46:12
2539 2019-08-01 05:44:31
1310 2019-08-01 05:48:25
2088 2019-08-01 05:48:32
112 2019-08-01 05:50:58
672 2019-08-01 05:54:17
108 2019-08-01 05:54:36
使用Php代码,数据被分为time_in和time_out
$query = "SELECT
EnrolledID,Date,COUNT(Time),
CASE
WHEN COUNT(Time) = 1 THEN
CASE
WHEN Time > '03:00:00'
&& Time <= '12:15:00'
THEN Time END
ELSE MIN(Time)
END as time_in,
CASE
WHEN COUNT(Time) = 1 THEN
CASE
WHEN Time > '12:15:00'
&& Time <= '23:59:59'
THEN Time END
ELSE NULLIF(MAX(Time), MIN(Time))
END as time_out
from attendance
GROUP BY EnrolledID,Date";
$result_set = mysqli_query($conn, $query);
if (mysqli_num_rows($result_set) > 0)
{
//$query = "TRUNCATE TABLE month_data";
//mysqli_query($conn, $query);
while($row = mysqli_fetch_assoc($result_set))
{
$EnrolledID = sprintf('%04d',$row["EnrolledID"]);
$Date = date_format( date_create($row['Date']), 'Y-m-d D' );
if(isset($row['time_in']) == 'NULL')
{
$time_in = date_format( date_create($row['time_in']), 'H:i:s' );
}
else
{
$time_in = '';
}
if(isset($row['time_out']) == 'NULL')
{
$time_out = date_format( date_create($row['time_out']), 'H:i:s' );
}
else{
$time_out = '';
}
$totaltime = (strtotime($time_out) - strtotime($time_in));
$hours = sprintf('%02d', intval($totaltime / 3600));
$seconds_remain = ($totaltime - ($hours * 3600));
$minutes = sprintf('%02d', intval($seconds_remain / 60));
$seconds = sprintf('%02d' ,($seconds_remain - ($minutes * 60)));
$final = '';
if ($time_in == '' || $time_out == '')
{
$final = '';
}
else
{
$final .= $hours.':'.$minutes.':'.$seconds;
}
$sql = "INSERT INTO month_data (Emp_no, Date,Time_in,Time_out,Total_hours) VALUES ({$EnrolledID},'{$Date}','{$time_in}','{$time_out}','{$final}')";
mysqli_query($conn, $sql);
}
echo "successfully Process data <br>";
}
无论何时运行脚本。尝试使用排序方式选择特定日期的数据
$dateToday = date('Y-m-d')
这样旧数据就不会受到影响。但它不合适。因为每月数据获取的时间不是每天完成的。如果您正在执行一个月的操作。然后,您可以在执行此代码之前删除当月的旧数据。因此,您将获得没有重复数据的新数据。我想使用方法检查考勤表和月份数据表以及考勤表中存在的新记录,在月份数据表中查找并获取更新。您可以使用“NOT…in”查询对日期进行排序。你们可以处理那个些数据。我还需要保留旧数据。唯一的问题是在数据库中的同一行中并没有重复的数据
$dateToday = date('Y-m-d')