我有一个带有 type 列的表tstzrange
在 Postgres 10.6 数据库中。
我需要插入/更新具有定义的下限的行,但当前时间的值是范围的上限,所以NOW()
作为上限值。
尝试过类似的事情:
UPDATE table_name
SET date_range = ['2018-03-23 00:00:00-05', now())
WHERE id = 3;
有没有办法使用内置函数或子查询?
Use a 范围构造函数. 手册: https://www.postgresql.org/docs/current/rangetypes.html#RANGETYPES-CONSTRUCT
每个范围类型都有一个与范围类型同名的构造函数
范围类型。使用构造函数比较频繁
比编写范围文字常量方便,因为它避免了
需要额外引用绑定值。构造函数
接受两个或三个参数。双参数形式构造一个
标准形式的范围(包括下限,不包括上限),
而三参数形式构造了一个范围,其边界为
由第三个参数指定的形式。第三个参数必须是一个
字符串“()
”, “(]
”, “[)
”, or “[]
”.
So:
UPDATE table_name
SET date_range = tstzrange('2018-03-23 00:00:00-05', now())
WHERE id = 3;
我假设你知道now()
解析为事务的开始时间。
- now() 和 current_timestamp 之间的区别 https://dba.stackexchange.com/a/63549/3684
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)