【问题标题】:Mysql select all records that are greater than some date timeMysql选择所有大于某个日期时间的记录
【发布时间】:2014-11-17 10:04:28
【问题描述】:

我想从表中选择date1 大于其他date2 的所有记录。 Date1 是 MySQL 中的 datetime 字段。 Date2 是 PHP 中的 datetime 对象。我不仅要比较日期,还要比较时间。这是我不工作的查询。

$sql = 'SELECT t.* 
        from transire t 
        where t.returning > '.$transire->returning.';';

错误:

Message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error
in your SQL syntax; check the manual that corresponds to your MySQL server version 
for the right syntax to use near '' at line 1

好的,我明白了,我不能像这样比较 php datetime 对象,但是正确的方法是什么?当然我可以使用 Date(t.returning) 但我也需要那天的时间。当前日期时间之后的所有事件。我搜索并找到了一些答案,但没有一个对我有帮助。谢谢!

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    应该是这样的:

    $sql = 'SELECT t.* from transire t where t.returning > "'.$transire->returning.'";';
    

    【讨论】:

      【解决方案2】:

      在 php 中为您的变量使用双引号,并在您的日期周围添加一个单引号:

      $sql = "SELECT t.* from transire t where t.returning > '".$transire->returning."'";
      

      并通过转义变量来避免 sql 注入。

      【讨论】:

      • 可捕获的致命错误:DateTime 类的对象无法在 C:\Apache2.2\htdocs\rma\application\modules\rma\controllers\TransireController.php 中的第 1107 行转换为字符串所以它必须是字符串?并比较字符串?
      猜你喜欢
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多