我的PostgreSQL计算不';不包括小数
我不太涉足SQL查询,当我需要一些比基础知识更重要的东西并且遇到问题时,我会依赖谷歌 我试图计算一个值,它返回一个四舍五入到最接近的整数的结果 为了测试这一点,我编写了以下查询:我的PostgreSQL计算不';不包括小数,sql,decimal,Sql,Decimal,我不太涉足SQL查询,当我需要一些比基础知识更重要的东西并且遇到问题时,我会依赖谷歌 我试图计算一个值,它返回一个四舍五入到最接近的整数的结果 为了测试这一点,我编写了以下查询: select ELAPTIME AS "ELAPSEC", ELAPTIME/60 AS "ELAPMIN" from CMR_RUNINF 结果是: +-----------+-----------+ |ELAPSEC |ELAPMIN | +-----------+-----------+ |258
select ELAPTIME AS "ELAPSEC", ELAPTIME/60 AS "ELAPMIN" from CMR_RUNINF
结果是:
+-----------+-----------+
|ELAPSEC |ELAPMIN |
+-----------+-----------+
|258 |4 |
+-----------+-----------+
|0 |0 |
+-----------+-----------+
|2128 |35 |
+-----------+-----------+
|59 |0 |
+-----------+-----------+
我试着做更多的事情,但是我已经简化了它,使它更容易解释这个问题。如何确保此计算返回小数点?请尝试此方法
SELECT ELAPTIME AS "ELAPSEC", ELAPTIME/60 :: Float AS "ELAPMIN"
FROM CMR_RUNINF
或:
您的SQL产品执行整数除法,因为两个操作数都是整数
eloptime
的整数类型被确定为表结构,60
自动假定为整数,因为它没有小数点
解决此问题有两种方法:
CAST(ELAPTIME AS float) / 60
60.0
而不是60
,以便解析器可以看到您没有将整数除以整数:
ELAPTIME / 60.0
提供SQL Server的语法,Cast(eloptime as Float)/60。简而言之,在除法之前先转换变量。谢谢。我选择了另一个选项,但知道所有选项很好。干杯
CAST(ELAPTIME AS float) / 60
ELAPTIME / 60.0