2012-07-22 143 views
0

我有一个MySQL表(A),其中有三列名为“日”,“月”和“年”,每个列中存储一个数字,当一起阅读,将代表一个日期。我必须将此表与另一个表(B)连接起来,其中日期列是UNIX格式。有没有简单的方法可以让我以简单的方式比较两张表中的两个日期?日期,月份的MySQL日期列

回答

2

你可以这样做:

SELECT * 
FROM tbl a 
INNER JOIN tbl b 
    ON UNIX_TIMESTAMP(CAST(CONCAT(a.year, '-', a.month, '-', a.day) AS DATETIME)) = b.unixtimecol 

但Unix时间戳列在tableB对第二个更精确,而tableA中的列只能精确到当天。因此,它可能并不总是在你想要的时候加入。

如果你想要加入其中两次是在同一天之内,你还可以使UNIX时间列DATE类型,这样两者就只能精确到天:

SELECT * 
FROM tbl a 
INNER JOIN tbl b 
    ON CAST(CONCAT(a.year, '-', a.month, '-', a.day) AS DATE) = DATE(FROM_UNIXTIME(b.unixtimecol)) 
+0

也发现了这个后有用:http://stackoverflow.com/questions/3486046/mysql-query-to-return-rows-that-are-equal-to-or-greater-than-a-certain-date-whe – 2012-07-22 20:07:17

2

你可以用领域的连接管理值

SELECT CONCAT(year, '-', month, '-', day) as u_date ... 

SELECT ... WHERE CONCAT(A.year, '-', A.month, '-', A.day) > B.another_field 

等等