2012-03-12 126 views
1

我有一個表,包括這些值的時間戳字段:奇怪的行爲MySQL查詢

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

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 
+0

你是對的Dems我保存在12小時格式不在24這是所需的正確的行$ date = date('y-m-d H:i:s'); - H使24小時模型可用。我正在使用12小時模式的小h。 – stefanosn 2012-03-12 13:38:35

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 
+1

你的意思是使用'<='? – MatBailie 2012-03-12 13:34:40

+0

對不起我的錯誤,謝謝@Dems – 2012-03-12 13:35:50

0

你有沒有考慮過的AM/PM東東?您的郵件中沒有這方面的信息。也許你的假設是錯的,sql是正確的...

但是:請提供您的數據庫版本... Oracle?

+0

這個問題被標記爲MySQL,而不是Oracle。 – 2012-03-12 13:44:02