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

postgresql – JSONb日期:内部的实际日期?

发布时间:2020-12-13 16:13:29 所属栏目:百科 来源:网络整理
导读:我正在使用 postgresql jdbc适配器将一堆数据迁移到jsonb字段(postgres 9.4). 导入后,日期字段看起来正确但显示为双引号.有没有办法判断它们是否实际存储在内部作为日期值?如果它们是字符串,我认为范围查找不会非常有效. 例如,属性jsonb字段中的条目如下所
我正在使用 postgresql jdbc适配器将一堆数据迁移到jsonb字段(postgres 9.4).

导入后,日期字段看起来正确但显示为双引号.有没有办法判断它们是否实际存储在内部作为日期值?如果它们是字符串,我认为范围查找不会非常有效.

例如,属性jsonb字段中的条目如下所示:

“founder_on”:“2012年9月1日上午12:00:00”,

我现在可以搜索,比方说,

SELECT CAST(properties->>’established_on’AS DATE

SELECT extract(来自演员的’year'(properties->>’established_on’作为时间戳))

并且两者都工作正常,但不要告诉我Postgres是否每次都在jsonb字段中重新分析字符串值作为日期.

我可以创建一个索引,我将这些值转换为日期,并使用它来搜索,但它似乎有点不优雅.我真的更愿意知道存储的值是一个日期.整数和浮点数似乎是它们的实际原始值,而不是字符串,如下所示:

shares_sold“:5900000,

“纬度”:33.561467,

任何反馈都高度赞赏.

JSON没有“日期”类型. JSONB类型(在 Pg 9.4中添加)映射但是 does not extend upon JSON primitive types.看到的值是文本.

虽然可以在字符串属性上添加索引,但是当前的“英文散文”格式将无法参与范围查询,因为这些值在日期上没有良好排序.

考虑到原始类型限制,存储有序日期的不同方式.

>具体ISO 8601 variation(具有相同的时区);文本
> UNIX time或“JavaScript时间”,以毫秒为单位;整数
> Julian Day(见‘J’ date format);数字

(即使范围不能,也可以使用等式索引探测..只要值完全匹配,仍然需要使用一致的数据表示.)

在(JSONB / GIN)索引上应用范围查询时,将DATE值转换为用于“date”属性的相应JSON数据类型(映射到整数,数字,Pg中的文本);不是另一种方式.

当获取值时,将所选格式转换为DATE – 它是“好的”,因为这是在范围查询之后完成的,并且是’required’,因为JSONB本身不支持日期或时间.

(编辑:李大同)

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

    推荐文章
      热点阅读