用于返回两个DATETIME字段之间的行的MYSQL查询

用于返回两个DATETIME字段之间的行的MYSQL查询,mysql,Mysql,我读过很多关于Mysql查询的帖子,其中没有一篇是我可以处理数据的。 在我的例子中,我有一个数据表,它有两个col,两个col都将数据作为DateTime保存。我正在尝试更正一个查询,该查询返回一行数据,其中RoomToDateTime位于其他两个DateTime字段之间。例如: RoomToDateTime = "2018-09-10 17:00:00" $FromDateTime = "2018-09-09 08:00:00" //User selected date and time

我读过很多关于Mysql查询的帖子,其中没有一篇是我可以处理数据的。 在我的例子中,我有一个数据表,它有两个col,两个col都将数据作为DateTime保存。我正在尝试更正一个查询,该查询返回一行数据,其中RoomToDateTime位于其他两个DateTime字段之间。例如:

RoomToDateTime = "2018-09-10 17:00:00"

$FromDateTime   = "2018-09-09 08:00:00" //User selected date and time
$ToDateTime     = "2018-09-10 16:00:00" //User selected date and time
查询:

SELECT *
FROM Conf
WHERE RoomToDateTime BETWEEN '".$FromDateTime ."' AND '".$ToDateTime."'
当我知道RoomToDateTime确实包含
“2018-09-09 10:00:00”
的记录时,此查询不返回任何数据

这仅适用于日期(不包括时间部分)。有人能理解为什么这个查询不起作用,或者我完全错了


非常感谢您的时间和有用的评论。

您应该使用stru-to-date

  "SELECT * 
    FROM Conf 
    WHERE RoomToDateTime 
        BETWEEN str_to_date('".$FromDateTime ."', '%Y-%m-%d %T' )  
            AND str_to_date('".$ToDateTime."',  '%Y-%m-%d %T' )"
在适当的约会时间尝试这种方式

  "SELECT * 
    FROM Conf 
    WHERE RoomToDateTime 
        BETWEEN str_to_date('2018-09-09 08:00:00', '%Y-%m-%d %T' )  
            AND str_to_date('2018-09-10 16:00:00', '%Y-%m-%d %T' )"
无论如何,您不应该使用php var ins sql字符串。。使用这些变量,您将面临SQLiJet的风险。。。
为了避免这种情况,请查看您的php mysql驱动程序,了解准备好的语句,并使用您提供的日期格式绑定param,mysql将完全理解
=
运算符。(仅概述一个选项):

选择*
来自Conf
哪里
RoomToDateTime>=“$FromDateTime.”和

感谢您的回复。已将查询更改为“SELECT*FROM Conf WHERE RoomToDateTime STR_to_DATE(““$FromDateTime.”、“%Y-%m-%d%T”)和STR_to_DATE(“$ToDateTime.”、“%Y-%m-%d%T”)之间的STR_to_DATE,但仍不会返回任何行。答案已更新,并提供了建议(检查您的真实内容$fromDateTime和$ToDateTime您是对的,我的$fromDateTime的内容是错误的。感谢您的帮助,现在可以了。再次感谢您的时间。您好,只需一个问题。如果“$fromDateTime”即“2018-09-09”和“$ToDateTime”的年、月和日部分为“2018-9-10”查询不返回任何数据,只返回单词“false”。但是,如果“$ToDateTime”即“2018-9-11”,则查询将返回数据。我希望RoomToDateTime在“$FromDateTime”和“$ToDateTime”之间的任何记录。您能理解为什么会出现这种情况吗?首先,如果您使用2018-09-09,那么您必须使用正确的掩码%Y-%m-%d;其次,如果没有时间部分,请记住时间分配在00:00:00
SELECT *
FROM Conf
WHERE 
   RoomToDateTime >= '".$FromDateTime ."' AND 
   RoomToDateTime <= '".$ToDateTime."'