0

在比较日期时,我得到了一些“奇怪”的结果。
table1有两行带有 TIMESTAMPS 值2009-08-26 23:39:562009-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-262009-08-27

所以,我的问题来了。我怎样才能进行比较以便返回正确的结果,我做错了什么?可能与内部连接有关吗?

4

1 回答 1

0

我怀疑:

  • 一些时区差异,但您似乎已经解释了这一点

  • 其他一些混淆问题的数据......还有其他可能干扰的东西吗?

希望我能重新创建这个并提供帮助。这是我的设置代码。我错过了什么?

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)
于 2009-08-27T07:10:43.810 回答