You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:56:05