在mysql表中检查将来的时间

时间:2014-08-24 20:27:54

标签: php mysql datetime time row

我有两张桌子

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';
}
}

有人能指出我正确的方向吗?

2 个答案:

答案 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
}