加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 更新范围类型的下限/上限

发布时间:2020-12-13 16:02:19 所属栏目:百科 来源:网络整理
导读:我有tstzrange类型的列(带时区范围的时间戳),我只需更新此值的上限或下限(并保持包含/独占边界) 我设法改变了 (-infinity,infinity) 同 UPDATE tableSET my_column = tstzrange( lower(my_column),now(),'()' ) 我有 (-infinity,current timestamp) 但我不知
我有tstzrange类型的列(带时区范围的时间戳),我只需更新此值的上限或下限(并保持包含/独占边界)

我设法改变了

(-infinity,infinity)

UPDATE table
SET
    my_column = tstzrange(
        lower(my_column),now(),'()'
    )

我有

(-infinity,<current timestamp>)

但我不知道如何保持默认范围的边界..这会改变甚至[]到()

解决方法

我错过了 found function,这样可以做到这一点

UPDATE table
SET
    my_column = tstzrange(
        lower(my_column),concat(
            CASE WHEN lower_inc(my_column) THEN '[' ELSE '(' END,CASE WHEN upper_inc(my_column) THEN ']' ELSE ')' END
        )
    )

最好为此创建函数.或者还有其他(更简单/更好)的解决方案吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读