【问题标题】:Why I cannot compare date using ">" in MySQL? [closed]为什么我不能在 MySQL 中使用“>”比较日期? [关闭]
【发布时间】:2016-04-12 03:25:20
【问题描述】:

我正在使用 MySQL 根据 CreationDate 过滤日期。

如果我在不比较 CreationDate 的情况下执行此操作,它将返回一些结果。

    use todo;
    SELECT *
    FROM ToDoItem
    WHERE ToDoListID = 1
    AND COMPLETED = 1
    AND Priority>=2;

The result

但是,当我添加与日期的比较时,将没有结果。

    use todo;
    SELECT *
    FROM ToDoItem
    WHERE ToDoListID = 1
    AND COMPLETED = 1
    AND Priority>=2
    AND CreationDate > ´2004-11-18 15:26:58´;

No Return

它说“'15:26:58' 附近存在 SQL 语法错误”和“查询中断”。

我不明白为什么这不起作用,因为我在 stackoverflow 上看到了一些使用 ">" 和 "

任何帮助将不胜感激。谢谢。

【问题讨论】:

标签: mysql sql


【解决方案1】:

使用单引号 (') 而不是反引号 (`),因此您的查询应该是:

use todo;
    SELECT *
    FROM ToDoItem
    WHERE ToDoListID = 1
    AND COMPLETED = 1
    AND Priority>=2
    AND CreationDate > '2004-11-18 15:26:58';

【讨论】:

  • 太棒了!非常感谢!这解决了我的问题。我正在使用 VirtualBox,但我没有注意到这一点。
【解决方案2】:

要获得可靠的结果,您应该使用DATEDIFF()

SELECT *
  FROM ToDoItem
  WHERE ToDoListID = 1
    AND COMPLETED = 1
    AND Priority>=2
    AND DATEDIFF(CreationDate, '2004-11-18 15:26:58') > 0;

如果Expr1Expr2之后,DATEDIFF(Expr1, Expr2)返回>0,如果Expr1Expr2之前返回

【讨论】:

  • 谢谢你告诉我这个函数!
  • CreationDate > '2004-11-18 15:26:58' 不可靠?
  • 有趣,但这里没有必要:查询性能会受到影响(函数不利于可搜索性),并且可以使用 < > 运算符比较日期。
猜你喜欢
  • 2011-12-17
  • 2011-02-13
  • 2015-09-11
  • 2017-11-11
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-09-02
相关资源
最近更新 更多