【问题标题】:php mysql date comparing with greater than and smaller than operatorphp mysql日期比较大于和小于运算符
【发布时间】:2013-06-28 20:59:13
【问题描述】:

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

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

$from 和 $to 是从 jquery datepicker 获取的输入。

【问题讨论】:

  • 为什么不引用$from"SELECT * FROM record WHERE Dateincident BETWEEN '$from' AND '@to'" -- 另外,您是否检查过以确保 PHP 变量 $from 和 MySQL 变量 @to 都存在?
  • 是的,这两个变量都存在
  • 可以发布编译好的SQL查询吗?
  • $from 是 php 变量而 @to 是 MySQL 变量是否有原因?
  • 从代码下方的注释看来,它应该是$to。直接从日期选择器中获取?您是否考虑过 MySQL 和清理所期望的格式?

标签: php mysql date compare


【解决方案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 语句与值连接起来来构造查询字符串。

【讨论】:

  • 如果不使用准备好的语句,请在 SQL 字符串中替换公开派生变量值时使用 mysql_real_escape_string()。
【解决方案2】:

可能是这样的:

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);

【讨论】:

  • 请提供更多信息。错误是什么?错误代码?
  • 绝对推荐使用WHERE BETWEEN
猜你喜欢
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多