2016-08-12 33 views
0

我需要得到的所有记录相同和小于2014-08-31,大于2014-08-01我用波纹管查询这个,有没有人有想法?MYSQL小于函数不能正常工作

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年8月31日7点56分13秒这个值。 请有人知道为什么会发生这种情况?

+0

你一定要明白的字符串和日期都是不一样的东西,你呢?您需要使用日期才能正常工作。此外,'2014-08-31 07:56:13'实际上是在2014-08-31 00:00:00之后,所以在这种情况下小于或等于正常工作... – ppeterka

+0

是的。谢谢@ppetereka – Darshan

回答

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日之前,列出所有。

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

+0

另外我得到了另一个解决方案。我也可以使用日历添加一个日期。 像日期= 2014-08-31所以增加一天应该是2014-09-31。 这也是帮我解决的。 – Darshan

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