resultado incorrecto para comparação de dados (para uma coluna timestamp) no mysql

votos
0

Eu tenho tido alguns resultados 'estranhos' ao comparar datas.
table1tem duas linhas com valores TimeStamps 2009-08-26 23:39:56e 2009-08-27 00:01:42
Quando faço esta consulta:

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

ele retorna duas linhas (quando só deveria ter retornado um).

Para estranheza adicionado as linhas no conjunto de resultados retornado tem tha mesmo valor: 2009-08-26 23:39:56

Mas se eu fizer esta consulta:

SELECT DATE(authorization_date) FROM table1

Ele retorna corretamente duas linhas com valores 2009-08-26e2009-08-27

Então, aqui vem minhas perguntas. Como eu poderia fazer a comparação de modo que o resultado correto é retornado, o que estou fazendo de errado? Poderia estar relacionada com a junção interna?

Publicado 27/08/2009 em 07:12
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Eu suspeitei:

  • alguns discrepency fuso horário, mas você parece ter contribuído para que

  • alguns outros dados que está confundindo o problema ... há algo mais que poderiam estar interferindo?

Gostaria de poder recriar este e ajudar. Aqui está o meu código de configuração. o que estou perdendo?

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)
Respondeu 27/08/2009 em 08:10
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more