我有这个字符串:
$actualTimePreformatted="16:46:00";
我需要mysql来选择tu_id号码 294 ,因为该ID有一段时间包含这段时间:
为此,我将给定的时间字符串传递给时间类型数据,然后通过比较它的内容选择转弯:
$actualTime= DateTime::createFromFormat('H:i:s', $actualTimePreformatted);
$timeMatchingTurns=mysql_query("SELECT * FROM turn_conf WHERE
(tu_mon_1_s >= $actualTime AND tu_mon_1_e <= $actualTime) OR
(tu_mon_2_s >= $actualTime AND tu_mon_2_e <= $actualTime) OR
(tu_mon_3_s >= $actualTime AND tu_mon_3_e <= $actualTime)");
$finalResult=mysql_fetch_array($timeMatchingTurns);
$turn_id=$finalResult['tu_id'];
这不是存储在$ turn_id上的id 294 ,而是给出了错误&#34; Catchable致命错误:类DateTime的对象无法转换为字符串&#34;。
答案 0 :(得分:3)
您可以更改此行:
$actualTime= DateTime::createFromFormat('H:i:s', $actualTimePreformatted);
通过以下方式:
$actualTimeObj = DateTime::createFromFormat('H:i:s', $actualTimePreformatted);
$actualTime = $actualTimeObj->format('H:i:s');
您正在使用Object作为字符串。
此外,查询应该在变量周围有单引号,如:
$timeMatchingTurns=mysql_query("SELECT * FROM turn_conf WHERE
(tu_mon_1_s >= '$actualTime' AND tu_mon_1_e <= '$actualTime') OR
(tu_mon_2_s >= '$actualTime' AND tu_mon_2_e <= '$actualTime') OR
(tu_mon_3_s >= '$actualTime' AND tu_mon_3_e <= '$actualTime')");