2009-08-27 52 views
0

在比較日期時,我一直有一些「奇怪」的結果。
table1有兩行帶有時間戳值2009-08-26 23:39:562009-08-27 00:01:42
當我做這個查詢:在mysql中日期比較(到時間戳列)的結果不正確

select * from table1 c 
INNER JOIN table2 r ON r.table1_id = c.id 
WHERE DATE(c.authorization_date) = '2009-08-26' 

返回兩行(當它僅應返回一個)。

爲了增加怪事在返回的結果集行具有塔相同的值:2009-08-26 23:39:56

但是如果我讓這個查詢:

SELECT DATE(authorization_date) FROM table1 

它正確返回兩列值2009-08-262009-08-27

所以,我的問題來了。我如何進行比較,以便返回正確的結果,我做錯了什麼?可能與內部連接有關?

回答

0

我懷疑:

  • 一些時區discrepency,但你似乎已經佔到該

  • 一些其他的數據是混淆的問題...有沒有別的東西,可能會干擾?

希望我可以重新創建和幫助。這是我的設置代碼。我錯過了什麼?

mysql> create table table1 (id integer primary key auto_increment, authorization_date TIMESTAMP); 
mysql> insert into table1 values (1, '2009-08-26 23:39:56'); 
mysql> insert into table1 values (2, '2009-08-27 00:01:42'); 
mysql> create table table2 (table1_id integer); 
mysql> insert into table2 values (1); 
mysql> insert into table2 values (2); 


    mysql> SELECT DATE(authorization_date) FROM c; 
    +--------------------------+ 
    | DATE(authorization_date) | 
    +--------------------------+ 
    | 2009-08-26    | 
    | 2009-08-27    | 
    +--------------------------+ 

    mysql> select * from table1 c INNER JOIN table2 r ON r.table1_id = c.id WHERE DATE(c.authorization_date) = '2009-08-26'; 
    +----+---------------------+-----------+ 
    | id | authorization_date | table1_id | 
    +----+---------------------+-----------+ 
    | 1 | 2009-08-26 23:39:56 |   1 | 
    +----+---------------------+-----------+ 
    1 row in set (0.00 sec) 
+0

對不起,我把我認爲是足夠的信息,但我不能更多的錯誤...這個設置沒有問題,但我的原始設置。 我粘貼我的原始設置,希望你或任何人都可以告訴我我錯在哪裏。 – Cesar 2009-08-28 05:46:05

+0

@ndp:對我感到羞恥!!!問題是,table2有一個主要複合鍵 (我討厭主複合鍵),所以內連接得到兩行。 對不起,讓你浪費你的時間,非常感謝! – Cesar 2009-08-28 07:04:08

+0

塞薩爾,很高興幫助,它解決了。 – ndp 2009-08-28 15:38:14