0

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

4

2 回答 2

2

您可以通过字段连接来管理值

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

或者

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

ETC ...

于 2012-07-22T19:54:25.490 回答
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))
于 2012-07-22T19:54:50.023 回答