问题,sql中extract函数返回的不是int类型

本文探讨了在pgsql环境中使用extract函数获取月份并计算季度时遇到的问题。由于extract函数返回的并非整型而是类似numeric的类型,导致预期的整数除法结果出现偏差。文章通过示例展示了如何通过类型转换解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:pgsql

在使用extract函数获取月份,然后计算季度,作为2个表连接条件的时候,发现查不到数据,后来发现extract函数返回的并不是int类型数据。

具体去查pgsql官方文档,没看到有说extract函数返回的是什么类型,下面举个例子说一下。

select (11 + 2)/3        -- 结果:4

上面的结果是4,可以认为,整除运算,int/int结果也是int。

查季度的时候,用如下sql(当前是11月):

select (extract(month from now()) + 2)/3        -- 结果:4.333333333333333
select extract(month from now())/3              -- 结果:3.6666666666666665

结果是4.333333333333333,所以extract(month from now())不是int类型,相当于numeric类型。

所以上面查季度的,要用cast转为int类型,截断小数部分。

select cast((extract(month from now()) + 2)/3 as int)        -- 结果:4

 上面说的有什么问题大家可以帮忙指正、补充下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值