首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间戳有最大值函数(带时区还是不带时区)?

问时间戳有最大值函数(带时区还是不带时区)?
EN

Stack Overflow用户
提问于 2020-12-09 09:12:11
回答 2查看 7.6K关注 0票数 9

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

代码语言:javascript
复制
select max(now()::timestamp, to_timestamp('2021-01-01', 'YYYY-MM-DD')::timestamp);
-- ERROR:  function max(timestamp without time zone, timestamp without time zone) does not exist

我的实际用法是在一个新插入查询中,我想在其中写:

代码语言:javascript
复制
INSERT ...
ON CONFLICT (pk) DO UPDATE SET
  ts = max(table.ts, excluded.ts)

问题

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-09 09:14:48

我想你是在找greatest()函数。

demo:db<>fiddle

max() (链接到文档)是一个聚合函数,它返回一组记录的最大值。

greatest() (链接到文档)接受任意数量的参数的最大值--在您的例子中有两个参数。它也可以用于timestamp类型。

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

票数 17
EN

Stack Overflow用户

发布于 2020-12-09 09:14:49

使用GREATEST

代码语言:javascript
复制
SELECT GREATEST(now()::timestamp, to_timestamp('2021-01-01', 'YYYY-MM-DD')::timestamp);

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65213753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档