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

咨询两个SQL日期函数的输出结果及原理疑惑

两个SQL日期函数的输出解析

第一个SQL语句的输出

SELECT EXTRACT(d from DATE_TRUNC('month', '2022-10-30'::DATE))

输出结果是 1。

你误以为结果是30,核心误区是没搞懂DATE_TRUNC('month', date)的作用:这个函数会把输入日期截断到当月的第一天,也就是把2022-10-30转换成2022-10-01。之后用EXTRACT(d from ...)提取的是这个截断后日期的“日”部分,自然就是1。

第二个SQL语句的输出

SELECT EXTRACT(month from '2022-10-30'::DATE + interval '5 days')

输出结果是 11。

原因很简单:10月一共有31天,2022-10-30加上5天后,日期会跨过10月的最后一天(10月31日),进入11月:

  • 2022-10-30 + 1天 = 2022-10-31
  • 再加4天就是2022-11-04

此时用EXTRACT(month from ...)提取的是这个新日期的月份,也就是11,所以月份会发生变化。

内容的提问来源于stack exchange,提问作者Veronika Humeniuk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:30:16