检查一个 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_one > field_two
显示field_one
否则显示field_two
它产生结果
"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
我构建了这个 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_one > field_two
显示field_one
否则显示field_two
它产生结果
"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