Postgresql 是否有时间戳的max函数(带或不带时区)?

Postgresql 是否有时间戳的max函数(带或不带时区)?,postgresql,Postgresql,当我在两个时间戳上调用max时,我得到一个错误: 选择max(现在()::timestamp,to_timestamp('2021-01-01','YYYY-MM-DD')::timestamp); --错误:函数max(没有时区的时间戳,没有时区的时间戳)不存在 我的实际使用情况是在upsert查询中,我想写下: INSERT ... ON CONFLICT (pk) DO UPDATE SET ts = max(table.ts, excluded.ts) 问题 在PostgreSQ

当我在两个时间戳上调用
max
时,我得到一个错误:

选择max(现在()::timestamp,to_timestamp('2021-01-01','YYYY-MM-DD')::timestamp);
--错误:函数max(没有时区的时间戳,没有时区的时间戳)不存在
我的实际使用情况是在upsert查询中,我想写下:

INSERT ...
ON CONFLICT (pk) DO UPDATE SET
  ts = max(table.ts, excluded.ts)
问题


在PostgreSQL中是否有一种惯用的方法来获取两个时间戳之间的最大值?

我想您正在寻找
grest()
函数

max()
()是一个聚合函数,返回一组记录的最大值。
magest()
()在任意数量的参数中取最大值-在您的情况下为两个。它也可用于类型
时间戳



额外注意:在任意数量的参数中取最小值的函数名为
least()
(而不是“minimate”)

我想您正在寻找
grest()
函数

max()
()是一个聚合函数,返回一组记录的最大值。
magest()
()在任意数量的参数中取最大值-在您的情况下为两个。它也可用于类型
时间戳



额外注意:从任意数量的参数中取最小值的函数名为
least()
(不是“最小”)

使用
maxist

选择最大值(现在()::时间戳,到时间戳('2021-01-01','YYYY-MM-DD')::时间戳);

最大
标量函数接受一个或多个参数并返回这些输入的最大值。

使用
最大

选择最大值(现在()::时间戳,到时间戳('2021-01-01','YYYY-MM-DD')::时间戳);

最大
标量函数接受一个或多个参数,并返回这些输入的最大值。

接受两个参数中的最大值
。。。不,它可以取一个参数,或者2个以上。你是对的,我应该更准确:)
取两个参数中的最大值。。。不,它可以包含一个参数,也可以包含多个参数。您是对的,我应该更准确地说:)