奇怪的行为mysql查询

时间:2012-03-12 13:25:57

标签: mysql sql select

我有一个带有时间戳字段的表,其中包含以下值:

2012-03-12 12:53:34
2012-03-12 12:54:11 
2012-03-12 01:02:37
2012-03-12 01:03:04
2012-03-12 01:03:46

我的查询如下

SELECT * FROM 
(Select MESSAGE_OF_USER,MESSAGE_TIME as time,CONVERSATION_ID 
 from poem_authors_messages 
 where (CONVERSATION_ID='2' or CONVERSATION_ID='1') and 
       MESSAGE_TIME>'2012-03-12 12:53:34' 
 ORDER BY time DESC) poem_authors_messages 
ORDER BY time ASC

注意时间。它应该给我这些结果

2012-03-12 12:54:11 
2012-03-12 01:02:37
2012-03-12 01:03:04
2012-03-12 01:03:46

但我得到了

2012-03-12 12:54:11

为什么会这样?

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:3)

你的3次是AM而不是PM。这意味着他们 大于您的过滤时间......

                     |  MESSAGE_TIME>'2012-03-12 12:53:34'
---------------------+--------------------------------------
2012-03-12 01:02:37  |  No
2012-03-12 01:03:04  |  No
2012-03-12 01:03:46  |  No
2012-03-12 12:54:11  |  Yes
2012-03-12 13:02:37  |  Yes
2012-03-12 13:03:04  |  Yes
2012-03-12 13:03:46  |  Yes

答案 1 :(得分:1)

你对mysql说过:只有当时间大于'2012-03-12 12:53:34'

时才选择

and MESSAGE_TIME>'2012-03-12 12:53:34'

and MESSAGE_TIME>'2012-03-12 12:53:34'更改为and MESSAGE_TIME <= '2012-03-12 12:53:34'

获得

2012-03-12 12:53:34
2012-03-12 01:02:37
2012-03-12 01:03:04
2012-03-12 01:03:46

答案 2 :(得分:0)

你考虑过AM / PM的东西吗?您的邮件中没有相关信息。也许你的假设是错的,而sql是对的...

但是:请提供您的数据库版本...... Oracle?