我在下面有这个代码.
<?php
require_once 'con.php';
$start_time_input = strtotime('08:00:00');
$finish_time_input = strtotime('17:00:00');
$total_time = 0;
$query = mysqli_query($con, "SELECT `start_break`, `finish_break` FROM `break_time` WHERE `start_break` AND `finish_break` BETWEEN '".$start_time_input."' AND '".$finish_time_input."' " );
while($tampil = mysqli_fetch_array($query)){
$start_time_db = strtotime($tampil['start_break']);
$finish_time_db = strtotime($tampil['finish_break']);
if ($start_time_input <= $start_time_db AND $finish_time_input >= $finish_time_db) {
$total_time = (($finish_time_input - $start_time_input) - ($finish_time_db - $start_time_db)) / 3600;
} else {
$total_time = ($finish_time_input - $start_time_input) / 3600;
}
echo $total_time;
}
?>
Run Code Online (Sandbox Code Playgroud)
我尝试执行php文件,页面显示我什么都没有,mysql查询似乎不正确.但是当我尝试在phpmyadmin中运行此查询时SELECT start_break, finish_break FROM break_time WHERE start_break AND finish_break BETWEEN '08:00:00' AND '17:00:00',查询会按预期给出结果.
有人可以帮我这个吗?我已经尝试做了一些研究,但据我所知,我只需要将strtotime添加到我的变量中,我已经这样做了,没有任何反应.
任何帮助都感激不尽.
这是您当前的查询:
SELECT start_break,
finish_break
FROM break_time
WHERE start_break AND finish_break BETWEEN '08:00:00' AND '17:00:00'
Run Code Online (Sandbox Code Playgroud)
该WHERE条款说的是start_break评估为真,并且finish_break是在上午8点到下午5点之间.这可能不是你想要的,因为start_break总是会评估为真.从MySQL 文档:
MySQL将任何非零非NULL值评估为TRUE
除了WHERE子句中的逻辑问题之外,您还尝试直接将开始列和结束列与仅限时间的字符串进行比较.除非这些列也是时间,否则这将无效,我怀疑.
这是您可能在逻辑上打算的查询:
SELECT start_break,
finish_break
FROM break_time
WHERE DATE_FORMAT(start_break, '%H:%i:%s') BETWEEN '08:00:00' AND '17:00:00' AND -- both the start break and
DATE_FORMAT(finish_break, '%H:%i:%s') BETWEEN '08:00:00' AND '17:00:00' -- finish break are within range
Run Code Online (Sandbox Code Playgroud)
这假定start_break和end_break列是datetime,您只想比较一天中的时间.
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |