Неверный результат для сравнения даты (со столбцом метки времени) в mysql - PullRequest
0 голосов
/ 27 августа 2009

У меня были некоторые "странные" результаты при сравнении дат.
table1 имеет две строки со значениями TIMESTAMPS 2009-08-26 23:39:56 и 2009-08-27 00:01:42
Когда я делаю этот запрос:

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-26 и 2009-08-27

Итак, вот мои вопросы. Как я могу сделать сравнение, чтобы получить правильный результат, что я делаю не так? Может быть связано с внутренним соединением?

1 Ответ

0 голосов
/ 27 августа 2009

Я подозревал:

  • некоторая дискретность часового пояса, но вы, кажется, учли это

  • некоторые другие данные, которые запутывают проблему ... есть что-то еще, что может мешать?

Хотел бы я воссоздать это и помочь. Вот мой установочный код. Что мне не хватает?

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...