Php 比较日期时间时,类DateTime的对象无法转换为字符串
我有这个字符串:Php 比较日期时间时,类DateTime的对象无法转换为字符串,php,datetime,Php,Datetime,我有这个字符串: $actualTimePreformatted="16:46:00"; 我需要mysql选择tu_id number294,因为该id有一个包含此时间的时间范围: 为此,我将给定的时间字符串传递给一个时间类型数据,然后通过比较其内容来选择转折点: $actualTime= DateTime::createFromFormat('H:i:s', $actualTimePreformatted); $timeMatchingTurns=mysql_query("SELECT
$actualTimePreformatted="16:46:00";
我需要mysql选择tu_id number294,因为该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'];
$actualTime=DateTime::createFromFormat('H:i:s',$actualTimePreformatted);
$timeMatchingTurns=mysql\u查询(“从turn\u配置中选择*
(tu_mon_1_s>=$actualTime和tu_mon_1_e=$actualTime和tu_mon_2_e=$actualTime和tu_mon_3_e您可以更改此行:
$actualTime= DateTime::createFromFormat('H:i:s', $actualTimePreformatted);
通过以下方式:
$actualTimeObj = DateTime::createFromFormat('H:i:s', $actualTimePreformatted);
$actualTime = $actualTimeObj->format('H:i:s');
您正在将对象用作字符串
此外,查询应在变量周围加上单引号,如:
$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')");
$timeMatchingTurns=mysql\u query(“从turn\u conf中选择*
(tu_mon_1_s>='$actualTime'和tu_mon_1_e='$actualTime'和tu_mon_2_e='$actualTime'和tu_mon_3_e$actualTime
是一个(日期时间)对象,而您正在将其转储到查询中的字符串中。这是一个错误。不用说,您应该使用准备好的语句。现在这已经不是问题了-在SQL中使用$actualTimePreformatted,而不是$actualTime。@DamienPirsy事实是“tu\u mon\u 1\s”所有其他类似的字段都是时间字段,而不是字符串。如果我将字符串信息与时间字段进行比较,不使用formattinf$actualTime,它会给出“mysql\u fetch\u array()期望参数1是资源,布尔给定”。我认为错误是由于两个数据的性质不同造成的…@JonSturdevant我尝试了一下,但只得到了“mysql\u fetch\u array()期望参数1是资源,布尔给定”错误。认为这是因为没有格式化$actualTimePreformatted–@Biomehanika在SQL中的变量周围加上单引号。例如,“…WHERE(tu_mon_1_s>=“$actualTime”…”
Hi Leticia。我已经这样做了,它给我的错误与我在SQL中直接使用$actualTimePreformatted而不是$actualTime时相同:“mysql_fetch_array()希望参数1是资源,布尔给定”确定,应用编辑后,不再出现错误,但“$turn_id=$finalResult['tu_id'];”不打印任何内容..是否应将其存储在那里?mysql_fetch_array返回非关联数组,尝试使用$finalResult[0];或者应该使用mysql_fetch_assoc()与mysql_fetch_array()相反,我认为select肯定存在一些问题,可能是比较的数据的性质……如果我进行此查询,结果是0(应该选择ID 294,不是吗?):从turn_conf中选择*(tu_mon_1_s>='17:13:00'和tu_mon_1_e)