Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过将时间字段与当前时间和当前时间加1小时进行比较来检索数据库记录_Php_Mysql_Sql_Time - Fatal编程技术网

Php 通过将时间字段与当前时间和当前时间加1小时进行比较来检索数据库记录

Php 通过将时间字段与当前时间和当前时间加1小时进行比较来检索数据库记录,php,mysql,sql,time,Php,Mysql,Sql,Time,我有一个用于存储预订的数据库表,它使用一个时间字段(bookingTime)和一个日期字段(bookingDate)。 我试图通过比较时间字段(bookingTime)和CURTIME来查看下一个小时的记录。我返回了一些结果,但不是所有结果。我尝试使用NOW()和interval,但似乎没有返回正确的结果。结果并没有显示整整一个小时的预订,而且似乎也没有超过小时,这意味着它将显示13:59但不是14:01的预订 以下是我当前使用的查询: SELECT TIME_FORMAT(bookin

我有一个用于存储预订的数据库表,它使用一个时间字段(bookingTime)和一个日期字段(bookingDate)。 我试图通过比较时间字段(bookingTime)和CURTIME来查看下一个小时的记录。我返回了一些结果,但不是所有结果。我尝试使用NOW()和interval,但似乎没有返回正确的结果。结果并没有显示整整一个小时的预订,而且似乎也没有超过小时,这意味着它将显示13:59但不是14:01的预订

以下是我当前使用的查询:

SELECT
    TIME_FORMAT(bookingTime, '%H:%i') as bookingTime, 
DATE_FORMAT(bookingDate, '%d/%m/%Y') as bookingDate, 
jobId, callSign, name, pickupAdd, phoneNum, destAdd, jobType, carType 
FROM job 
WHERE TIME(bookingTime) between curtime(bookingTime) and curtime(bookingTime)+3600
order by DATE(bookingDate), TIME(bookingTime) asc

谢谢你的帮助

您的WHERE语句充满了错误
CURTIME()
只返回当前时间,不接受任何参数。您希望使用
TIME()
获取时间戳的时间部分。您还需要使用
INTERVAL
将时间添加到时间戳中。您还需要将预订时间与现在/现在+1小时进行比较

试试这个:

WHERE TIME(bookingTime) between CURTIME() and CURTIME()+INTERVAL 1 HOUR
  AND DATE(bookingDate) = CURDATE()

我曾尝试使用TIME(),但它会返回多个日期的结果,而不仅仅是今天的结果。我需要在where条款中包括预订日期吗?谢谢你的帮助。谢谢约翰,这很有效。我花了很长时间试图让它工作。