【问题标题】:How to check whether the Date time is overlapping between two date times?如何检查日期时间是否在两个日期时间之间重叠?
【发布时间】:2015-07-02 19:30:09
【问题描述】:

我正在开发一个会议室预订系统,我需要他们想要预订房间的时间段。现在我有两个时间段: 2016-06-14 13:00:07 作为 from_time 字段,2016-06-14 05:00:07 作为我数据库中的 to_time 字段。现在我必须检查给定期间是否与数据库中的任何其他给定期间重叠。怎么做? 存储数据:我的代码:

$date = mysql_real_escape_string($_POST['date']);
    $date1= mysql_real_escape_string($_POST['date1']);
    $from=mysql_real_escape_string($_POST['date2']);
    $to=mysql_real_escape_string($_POST['date3']);

    $from = strtotime($from);
    $to = strtotime($to);

    $subfrom =strtotime('-30 minutes',$from);
    $addto = strtotime('+30 minutes',$to);

    $from = date('Y-m-d H:i:s',$from);
    $to = date('Y-m-d H:i:s',$to);

    $subfrom = date('Y-m-d H:i:s',$subfrom);
    $addto =  date('Y-m-d H:i:s',$addto);

    $id = mysql_real_escape_string($_POST['faculty_id']);
    $name = mysql_real_escape_string($_POST['faculty_name']);
    $div = mysql_real_escape_string($_POST['division']);
    $school = mysql_real_escape_string($_POST['s_name']);
    $email = mysql_real_escape_string($_POST['email']);
    $contact = mysql_real_escape_string($_POST['contact_no']);
    $intercom = mysql_real_escape_string($_POST['intercom']);
    $purpose = mysql_real_escape_string($_POST['purpose']);
    if($purpose=='university lecture')
        $purpose = "university lecture";
    else if($purpose=='guest lecture')
        $purpose = "guest lecture";
    else if($purpose=='PHD Oral Exam')
        $purpose = "PHD Oral Exam";
    else if($purpose=='Placement Interview')
        $purpose = "Placement Interview";
    else if($purpose=='others')
        $purpose = "others";

    $reason = mysql_real_escape_string($_POST['reason']);

    $sql = "insert into video_conf_room(employee_id, emp_name, division, s_name, email, contact_no, intercom, from_time, to_time, b_f_time, b_t_time, purpose, reason) 
            values('$id','$name','$div','$school','$email','$contact','$intercom','$from','$to','$subfrom','$addto','$purpose','$reason')";

     $res = mysql_query($sql, $con) or die(mysql_error());
     if($res)
     {
        echo "you have successfully booked the video comferencing room";
        $message = "Following are the details for the video conferencing room registration booked recently \r\n Faculty id: ".$id."\r\nName: ".$name."\r\n Divison: "
                    .$div."\r\n School: ".$school."\r\n email: ".$email."\r\n Contact: ".$contact."\r\n Intercom no.: ".$intercom."\r\n Purpose: ".
                    $purpose."\r\n Reason: ".$reason."\r\n Booked from :".$subfrom."Booked till :".$addto;
        $message = wordwrap($message, 70, "\r\n");

        mail('mymail@domain.com','Video conferencing room registration',$message);


     }

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你会运行一个类似...的查询

    SELECT * FROM `video_conf_room` WHERE ('$from' BETWEEN `from_time` AND `to_time`) OR ('$to' BETWEEN `from_time` AND `to_time`)
    

    ...如果您得到任何结果,那么届时将预订另一个会议,您无需插入预订。

    【讨论】:

    • 当我尝试在我的查询中实现这一点时,它总是显示日期时间重叠! '$reason = mysql_real_escape_string($_POST['reason']); $sql1 = "SELECT * FROM video_conf_room WHERE ('$from' BETWEEN from_time AND to_time) OR ('$to' BETWEEN from_time AND to_time)"; $response = mysql_query($sql1,$con) 或死 (mysql_error()); if(!$response){ //执行注册查询 } else echo "时间重叠";'而且它总是显示“时间重叠”
    • 请告知,我应该做哪些修改?
    猜你喜欢
    • 1970-01-01
    • 2020-02-26
    • 2011-02-07
    • 2013-09-27
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多