在比较日期时,我一直有一些'奇怪'的结果
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'
它返回两行(当它只返回一行时)。
为了增加奇怪性,返回的resultSet中的行具有相同的值:2009-08-26 23:39:56
但如果我提出这个问题:
SELECT DATE(authorization_date) FROM table1
它正确返回值为2009-08-26
和2009-08-27
所以,这是我的问题。我怎么能进行比较,以便返回正确的结果,我做错了什么?可能与内部联接有关吗?
答案 0 :(得分: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)