如何根据 jsonb 列中的 unix 整数设置 postgres 时间戳列?

Posted

技术标签:

【中文标题】如何根据 jsonb 列中的 unix 整数设置 postgres 时间戳列?【英文标题】:How to set a postgres timestamp column based on a unix integer in a jsonb column? 【发布时间】:2022-01-15 20:24:12 【问题描述】:

我正在尝试更新我的数据库以从 jsonb 对象中提取一个 unix 纪元整数,并使用该值设置一个时间戳列。我有一些碎片,但我无法将它们全部组合在一起。这是我所在的位置(subscription_end 是时间戳列,json_data 是 jsonb 列):

UPDATE "customers" SET "subscription_end" = to_timestamp(
    json_data -> 'some_property' ->> 'subscription_end'
);

我不确定我的所有内容是否都按正确的顺序排列。我找不到任何像上面那样使用 to_timestamp 函数和 json 向下钻取的好例子。

【问题讨论】:

可能需要添加演员表:to_timestamp((json_data -> 'some_property' ->> 'subscription_end')::integer);。唯一知道的方法是尝试,最好在UPDATE 上使用WHERE 来限制您正在更新的内容。 谢谢,想通了,看下面我的回答 【参考方案1】:

就是这样:

UPDATE "customers" SET "subscription_end" = 
    to_timestamp((json_data -> 'some_property' ->> 'subscription_end')::integer);

【讨论】:

以上是关于如何根据 jsonb 列中的 unix 整数设置 postgres 时间戳列?的主要内容,如果未能解决你的问题,请参考以下文章

从 JSONB 列中的多个数组中过滤掉对象

通过 jsonb 列中的给定键/值对过滤行

postgres jsonb列中的模糊字符串匹配

在 PostgreSQL 中的 jsonb 列中搜索 json 数组,其中数据为 json 数组

如何在 Postgresql 中实现对复杂嵌套 JSONB 的全文搜索

如何使用 Slick 在 Postgres 中将 json 对象插入到 jsonb 类型的列中