如何将NOW()函数用作范围的上限?

时间:2019-06-20 16:44:33

标签: sql postgresql insert range range-types

我在Postgres 10.6数据库中有一个表,列的类型为tstzrange。 我需要插入/更新具有定义的下限的行,但是将当前时间的值作为范围的上限,因此将NOW()作为上限值。

尝试过类似的事情:

UPDATE table_name
SET date_range = ['2018-03-23 00:00:00-05', now())
WHERE id = 3;

是否可以使用内置函数或子查询?

1 个答案:

答案 0 :(得分:2)

使用 范围构造器 The manual:

  

每个范围类型都有一个构造函数,其名称与   范围类型。经常使用构造函数   比编写范围文字常量更方便,因为它避免了   需要额外引用绑定值。构造函数   接受两个或三个参数。两参数形式构造一个   标准形式的范围(下限包含,上限排除),   而三参数形式构造了一个范围为   第三个参数指定的形式。第三个参数必须为   字符串“ {()”,“ (]”,“ [)”或“ []”中的一个。

所以:

UPDATE table_name
SET    date_range = tstzrange('2018-03-23 00:00:00-05', now())
WHERE  id = 3;

我认为您知道now()可以解决交易的开始时间。