我有一个表,里面有很多时间戳,其中一些可能是空的。有没有办法将它们全部组合起来并保留最新的时间戳,这样我就不必单独引用每个时间戳?
例如,给出这个过度简化的例子:
SELECT blah
FROM foo
WHERE
ts1 >= '2018-04-17' OR
ts2 >= '2018-04-17' OR
ts3 >= '2018-04-17';
我怀疑一定有办法把它变成这样的东西:
SELECT blah, somefunc(ts1, ts2, ts3) AS ts
FROM foo
WHERE ts >= '2018-04-17';
你需要的
greatest()
功能:关于 NULL:
请注意,将时间戳(尤其是带时区的时间戳)与简单日期值进行比较有时会产生意外结果。我总是尝试使用类似的东西
date_trunc('day', '2018-01-05'::date)
来获得可以干净比较的类型。