我有一个带有时间戳字段的表,其中包含以下值:
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
为什么会这样?
任何帮助表示感谢。
答案 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?