PostgreSQL 14中AGE函数返回天数而非年日月格式的原因咨询
问题解答
你看到AGE()函数返回天数格式的核心原因是PostgreSQL的intervalstyle配置参数控制了interval类型值的显示格式,而非函数本身的返回结果不符合文档描述。
具体细节:
- AGE()函数确实返回的是
interval类型值,官方文档中提到的年、月、日符号化结果是该类型的一种显示形式,但PostgreSQL允许通过intervalstyle参数切换显示风格。 - 如果你的当前
intervalstyle设置为iso_8601,就会将较长的时间间隔转换为天数来展示(比如你得到的28531 days, 0:00:00);而设置为postgres或sql_standard时,会显示为年、月、日组合的格式(例如78 years 2 mons 1 day)。
验证与修改方法:
- 查看当前
intervalstyle设置:
SHOW intervalstyle;
- 临时修改显示风格(会话级别):
SET intervalstyle = 'postgres';
执行这条语句后再重新运行你的AGE查询,就能得到文档中描述的年、月、日格式结果。
内容的提问来源于stack exchange,提问作者Ewald
相关产品推荐
相关产品推荐

