MYSQL小于功能不正常

时间:2016-08-12 12:00:08

标签: mysql

我需要获得所有相同且低于2014-08-31并且大于2014-08-01的记录我使用了下面的查询,有没有人有想法?

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

我的输出是

{{1}}

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

3 个答案:

答案 0 :(得分:2)

问题是'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日之前列出所有内容。

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

答案 1 :(得分: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');

答案 2 :(得分:0)

当您将日期与 DateTime 字段进行比较时,试试这个。

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