【问题标题】:MYSQL less Than function not working properlyMYSQL小于功能无法正常工作
【发布时间】:2016-12-19 10:30:08
【问题描述】:

我需要获取所有等于和小于 2014-08-31 和大于 2014-08-01 的记录,我为此使用了波纹管查询,有人知道吗?

SELECT * FROM table where user_id = 322 and createdDate > '2014-08-01' and createdDate <= '2014-08-31';

表值

createdDate
2014-08-01 05:14:52
2014-08-27 05:15:08
2014-08-29 02:54:06
2014-08-30 05:57:12
2014-08-31 07:56:13

我的输出是

2014-08-01 05:14:52
2014-08-27 05:15:08
2014-08-29 02:54:06
2014-08-30 05:57:12

我无法获得 2014-08-31 07:56:13 这个值。 请问有人知道为什么会这样吗?

【问题讨论】:

  • 您确实意识到字符串和日期不是一回事,对吗?您需要使用日期才能使所有这些正常工作。此外,2014-08-31 07:56:13 实际上在2014-08-31 00:00:00 之后,因此在这种情况下小于或等于正常工作...
  • 是的,明白了。谢谢@ppetereka

标签: mysql


【解决方案1】:

问题是'2014-08-31'被解释为'2014-08-31 00:00:00'

最快的解决方法是:

SELECT * FROM table where user_id = 322 and createdDate > '2014-08-01' and createdDate < '2014-09-01';

这将列出 9 月 1 日之前的所有内容。

正确的解决方案是使用日期而不是字符串。

【讨论】:

  • 我还有另一个解决方案。我也可以使用日历添加一个日期。像日期 = 2014-08-31 所以添加一天应该是 2014-09-31。这也是帮我解决的。
【解决方案2】:

这应该可以解决..

    SELECT * FROM table where user_id = 322 and 
createdDate >= str_to_date('08/01/2014 00:00:00','%m/%d/%Y %H:%i:%s') 
and createdDate <= ('08/31/2014 23:59:59','%m/%d/%Y %H:%i:%s');

【讨论】:

    【解决方案3】:

    当您将日期与 DateTime 字段进行比较时,请尝试此操作。

    SELECT * FROM table where user_id = 322 and Date(createdDate) > '2014-08-01' and Date(createdDate) <= '2014-08-31';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-23
      • 2013-11-06
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多