我正在将PHP与MySQL配合使用,并且希望选择从现在起2小时内具有预订时间的行。如何将数据库中的内容与NOW()
MySQL函数进行比较?
我有pickupDate
格式的yyyy-mm-dd
列和pickupTime
格式的HH:mm
列(24小时)。我尝试使用NOW()
创建一个查询,该查询返回12小时制的时间HH:mm:ss
,例如2019-05-24 07:54:06。我不知道如何将其格式化为19:54,或者是否应该使用其他函数。
例如,如果当前日期和时间是19年5月24日19:54:06,那么我想选择该日期19:54到21:54之间的行。
我的表结构是:
referenceNo VARCHAR(100)
pickupDate DATE
pickupTime VARCHAR(100)
答案 0 :(得分:2)
您需要从DATETIME
和pickupDate
中创建一个pickupTime
兼容的值(可以通过CONCAT
将它们在一起来完成),然后可以进行比较时间范围为NOW()
至2小时后:
SELECT *
FROM yourtable
WHERE CONCAT(pickupDate, ' ', pickupTime) BETWEEN NOW() AND NOW() + INTERVAL 2 HOUR
答案 1 :(得分:0)
要在php中添加两个小时
$hoursnow = date('H:i');
$timestamp = strtotime(date('H:i')) + 60*60*2;
$plusTwohours = date('H:i', $timestamp);
然后$PlusTwohours
使用此变量对查询进行如下操作
SQL查询:
$sqlQuery = 'select * from foodorder where pickupDate=DATE(NOW()) AND pickupTime>='.$hoursnow.' and pickupTime<='.$plusTwohours;
$result = mysql_query($sqlQuery);
变量$result
将具有查询值
第二种情况:在5月24日23:30:00结束之前添加小时数
对于同一列PickupDate,应该在两个不同的日期之前处理
$d = new DateTime('2011-01-01 23:30:30');
$startDate = $d->format('Y-m-d H:i:s'); // For testing purpose assigned manually
$starttime = date('H:i');
// Here Process start, storing end date by adding two hours
$enddate1 = strtotime($startDate) + 60*60*2;
$enddate = date('Y-m-d', $enddate1); // Extracting date alone
$endtime = date('H:i', $enddate1); // Extracting time alone
必须比较列拾取日期的开始和结束日期,这是查询
$sqlQuery = "select * from foodorder where pickupDate>=DATE(".$startDate.") AND pickupDate<=DATE(".$enddate.") AND pickupTime>='".$starttime."' AND pickupTime<='".$endtime."'";
$result = mysql_query($sqlQuery);