检查一个 unix_timestamp 是否大于另一个

Check if one unix_timestamp is greater than another

我构建了这个 SQL 查询,它应该将最高日期值放在 field_result 中,但它没有按预期工作。

SELECT
    field_one,
    field_two,
    IF(((field_one IS NOT NULL AND field_one <> '') AND
        (field_one > TableB.field_two)),
       unix_timestamp(field_one),
       unix_timestamp(TableB.field_two)) AS result
FROM TableA
LEFT JOIN TableB ON TableB.id = TableA.id

条件很简单

它产生结果

"field_one", "field_two", "field_result"
"1495681346","1500328106","1500328106"
"1500342725","1500328106","1500328106"
"1499922505","1500329807","1500329807"
"1500343148","1500328106","1500328106"
"1500329593","1500328106","1500328106"

由于某些原因 row 2 field_result 的值不是 1500342725(这个值大约 14619 大于 1500328106)。

我想我的语法是正确的,但我不确定,因为结果不是我所期望的

如果您想找到两个字段中的较大者,请考虑使用 MySQL 的 GREATEST() 函数。

SELECT
    field_one,
    field_two,
    GREATEST(COALESCE(UNIX_TIMESTAMP(field_one), -1),
             COALESCE(UNIX_TIMESTAMP(field_two), -1)) AS result
FROM TableA