php mysql日期与大于和小于运算符的比较

时间:2013-06-28 20:59:13

标签: php mysql date compare

我面临的问题是在我的Mysql数据库中使用php进行日期比较。我的日期字段是在DATETIME,我在下面使用以下查询,但它没有返回正确答案请帮助我..这是代码

"SELECT * FROM record WHERE Dateincident  >=  $from AND Dateincident <=$to";

$ from和$ to是来自jquery datepicker的输入。

2 个答案:

答案 0 :(得分:1)

首先,您必须在日期时间值周围加上引号

$sql = "SELECT * FROM record WHERE Dateincident >= '$from' AND Dateincident <= '$to'";
                                                   ^     ^                     ^   ^

相当于

$sql = "SELECT * FROM record WHERE Dateincident BETWEEN '$from' AND '$to'";

现在$from$to格式正确

'YYYY-MM-DD' or 'YYYY-MM-DD HH:NN:SS'

$from = '2013-06-01';
$to   = '2013-06-26';

这是 SQLFiddle 演示

旁注考虑使用 prepared statements ,而不是通过将sql语句与值连接来构造查询字符串。

答案 1 :(得分:0)

可能是这样的:

SELECT * 
FROM record 
WHERE Dateincident BETWEEN <from> AND <to>

我在这个sql fiddle中进行了测试,但它确实有效。

但问题可能不是你的SQL查询,而是你的php脚本。所以请试试这个:

$mysqlhost="yourDBHost";
$mysqluser="yourMYSQLUser";
$mysqlpwd="yourMYSQLPass"; 
$mysqldb="yourDataBaseName";
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Connection failed.");

mysql_select_db($mysqldb, $connection) or die("Database could not be selected.");

$query = "SELECT * FROM `record` WHERE `Dateincident` BETWEEN '".$from."' AND '".$to."'";
$rescource = mysql_query($query) or die("Error processing query.");
while($row = mysql_fetch_array($rescource)){
    // do something with each row
}

mysql_close($connection);