Php timediff在mysql中不使用日期\格式
我做了一个查询,使用Php timediff在mysql中不使用日期\格式,php,mysql,time,mysqli,Php,Mysql,Time,Mysqli,我做了一个查询,使用timediff(time\u out,time\u in)作为total\u time1从另外两个名为time\u in和time\u out的字段计算total\u time1 现在,我想将该时间转换为一种更好的格式,而不是通常的hh:mm:ss,因此在同一个查询中,我将DATE\u格式(total\u time1,“%l:%I”)转换为total\u time2,但由于某种原因,每当我输入新的进出时间时,它都不起作用 以下是查询: $sql="SELECT
timediff(time\u out,time\u in)作为total\u time1
从另外两个名为time\u in
和time\u out
的字段计算total\u time1
现在,我想将该时间转换为一种更好的格式,而不是通常的hh:mm:ss
,因此在同一个查询中,我将DATE\u格式(total\u time1,“%l:%I”)转换为total\u time2
,但由于某种原因,每当我输入新的进出时间时,它都不起作用
以下是查询:
$sql="SELECT
DATE_FORMAT(time_in, '%l:%i %p') AS time_in,
DATE_FORMAT(time_out, '%l:%i %p') AS time_out,
timediff(time_out, time_in) AS total_time1,
DATE_FORMAT(total_time1, '%l:%i') AS total_time2,
FROM $table";
$result = $mysqli->query($sql);
while($row = $result->fetch_array()){
<td><?php echo $row['time_in']; ?></td>
<td><?php echo $row['time_out']; ?></td>
<td><?php echo $row['total_time1']; ?></td>
<td><?php echo $row['total_time2']; ?></td>
}
$sql=“选择
日期格式(时间单位,'%1:%i%p')作为时间单位,
日期格式(超时,“%l:%i%p”)作为超时,
timediff(超时,超时)作为总时间1,
日期格式(总时间1,“%l:%i”)为总时间2,
从$table开始”;
$result=$mysqli->query($sql);
而($row=$result->fetch_array()){
}
我在它自己的页面上的一个大表上显示所有内容(包括时间输入、输出、totaltime1和totaltime2)
total_time1
就像我说的那样工作,但是total_time2
不显示任何内容。没有错误或任何东西。我做错了什么 不能使用在同一查询中创建的别名
你必须这样再写一遍
$sql="SELECT
DATE_FORMAT(time_in, '%l:%i %p') AS time_in,
DATE_FORMAT(time_out, '%l:%i %p') AS time_out,
timediff(time_out, time_in) AS total_time1,
DATE_FORMAT(timediff(time_out, time_in), '%l:%i') AS total_time2
FROM $table";
另外,如果你想格式化时间
您不应使用DATE\u格式
,而应使用TIME\u格式
像这样
$sql="SELECT
DATE_FORMAT(time_in, '%l:%i %p') AS time_in,
DATE_FORMAT(time_out, '%l:%i %p') AS time_out,
timediff(time_out, time_in) AS total_time1,
DATE_FORMAT(timediff(time_out, time_in), '%l:%i') AS total_time2
FROM $table";
$sql="SELECT
TIME_FORMAT(time_in, '%l:%i %p') AS time_in,
TIME_FORMAT(time_out, '%l:%i %p') AS time_out,
timediff(time_out, time_in) AS total_time1,
TIME_FORMAT(timediff(time_out, time_in), '%l:%i') AS total_time2
FROM $table";
关于MySQL中所有日期和时间函数的文档您不能自行引用该列。你还有一个额外的逗号,我猜是打字错误 你需要这样的东西:
$sql="SELECT time_in, time_out, total_time1, DATE_FORMAT(total_time1, '%l:%i') AS total_time2
FROM (SELECT
DATE_FORMAT(time_in, '%l:%i %p') AS time_in,
DATE_FORMAT(time_out, '%l:%i %p') AS time_out,
timediff(time_out, time_in) AS total_time1
FROM $table) a";
现在所有内容都显示为“12:00”。格式正确,但由于某些原因,它没有显示正确的时差。time\u in和time\u out是否为datetime类型?total\u time1在hh:mm:ss中显示良好。total_time2似乎以12:00格式显示所有内容,而其他内容则留空。似乎找不到任何模式。您也可以在此处找到所有格式,您不应该使用日期格式来格式化时间,而应该使用时间格式。我会更新我的答案