我有一个MySQL表(A),其中包括三个名为“day”,“month”和“year”的列,每个列都存储一个数字,当它们一起阅读时,它们代表一个日期。我必须将此表与另一个表(B)连接,其中日期列为UNIX格式。有一种简单的方法可以让我以简单的方式比较两个表中的两个日期吗?
答案 0 :(得分:2)
您可以通过字段连接来管理值
SELECT CONCAT(year, '-', month, '-', day) as u_date ...
或
SELECT ... WHERE CONCAT(A.year, '-', A.month, '-', A.day) > B.another_field
等等......
答案 1 :(得分:2)
你可以这样做:
SELECT *
FROM tbl a
INNER JOIN tbl b
ON UNIX_TIMESTAMP(CAST(CONCAT(a.year, '-', a.month, '-', a.day) AS DATETIME)) = b.unixtimecol
但tableB
中的unix时间戳列更精确到第二列,而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))