我有两张桌子
1)dayplanner:每隔5分钟分开一天值= 00:00:00,00:05:00,00:10:00 ...... 23:55:00 2)预订:姓名,开始和结束价值= [约翰,12:00:00,12:30:00],[鲍勃,14:00:00,14:45:00]等
此查询
SELECT d.dayplanner_time,IF(d.dayplanner_time = a.reservations_starttime,'true','false')AS保留,IF(a.reservations_start为null,false,true)AS inbetween 来自dayplanner d LEFT JOIN预订a ON(d.day_time> = a.reservations_start AND d.dayplanner_time< = a.reservations_finish)WHERE d.dayplanner_time BETWEEN '12:00'00'和'18:00:00';
如果startime在开始前15分钟,我想要的是一个带有true / false的检查行。这是因为预订不应该短于此。我做了一个功能,但它不起作用
function timeinterval($var1,$var2){
$datetime1=strtotime('$var1');
$datetime2=strtotime('$var2');
$interval=abs($datetime2-$datetime1);
$minutes=round($interval/60);
if($minutes < 15){
echo 'true';
}else{
echo 'false';
}
}
有人能指出我正确的方向吗?
答案 0 :(得分:0)
将SQL DATEDIFF与&#34;分钟&#34;一起使用获得时差的选项。然后你可以检查该列的值,看它是否在15分钟内。我不确定你是否想在查询本身或后期处理中进行检查,所以我没有给出一个确切的例子
答案 1 :(得分:0)
首先,你的函数不起作用,因为它试图在文字字符串'$ var1'和'$ var2'上运行strtotime()
而不是参数$ var1和$ var2的值传入功能。其次,您应该从函数返回布尔值,而不是字符串等效。
请改为尝试:
function timeinterval($var1, $var2)
{
$datetime1 = strtotime($var1);
$datetime2 = strtotime($var2);
$interval = abs($datetime2 - $datetime1);
$minutes = round($interval/60);
return $minutes < 15; // returns boolean true or false depending on outcome
}