PostgreSQL中如何用DATE的星期名称作为JSONB查询的键
解决PostgreSQL中通过日期星期名称查询JSONB字段的问题
问题出在to_char(a.activity_date, 'Day')的输出格式上:PostgreSQL使用'Day'格式时,会自动补空格将星期名称填充到最长英文星期名(Wednesday,9个字符)的长度,比如返回'Monday '而非'Monday',但你的JSONB字段里的键是不带空格的"Monday",所以只有长度刚好匹配的Wednesday能正确返回值。
有两种修正方法:
方法1:用trim()去除空格
select a.activity_date, a.department_id, d.hours_of_operation->trim(to_char(a.activity_date, 'Day'))->>'isOpen' as isOpen from activity a join department d on a.department_id = d.id
方法2:使用FMDay格式避免填充空格
PostgreSQL的FM前缀可以移除格式输出中的填充空格,直接返回紧凑的星期名称:
select a.activity_date, a.department_id, d.hours_of_operation->to_char(a.activity_date, 'FMDay')->>'isOpen' as isOpen from activity a join department d on a.department_id = d.id
内容的提问来源于stack exchange,提问作者kaycee17
相关产品推荐
相关产品推荐

