在比较日期时,无法将类DateTime的对象转换为字符串

时间:2014-05-27 14:58:10

标签: php datetime

我有这个字符串:

$actualTimePreformatted="16:46:00";

我需要mysql来选择tu_id号码 294 ,因为该ID有一段时间包含这段时间:

Table image

为此,我将给定的时间字符串传递给时间类型数据,然后通过比较它的内容选择转弯:

$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;。

1 个答案:

答案 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')");