【问题标题】:SQL EXP raising Arithmetic overflow errorSQL EXP 引发算术溢出错误
【发布时间】:2018-02-01 16:10:27
【问题描述】:

无论出于何种原因,以下由于算术溢出错误而失败。我试过铸造和转换没有成功。有什么想法吗?

DECLARE 
    @s INT = DATEDIFF(SECOND, '19700101', @EndDate),
    @e INT = DATEDIFF(SECOND, '19700101', @StartDate)

DECLARE @X FLOAT = @s-@e

SELECT EXP(@X)

将表达式转换为数据类型浮点数时出现算术溢出错误。

【问题讨论】:

  • @Diado @X 是该范围内可接受的值。 @X = 1728000
  • 废弃我之前的评论 - 没有正确阅读错误信息。辛苦了一天,抱歉
  • 你想做什么?浮点数也有限制,比如 1.79E+308。 exp 可以计算的最大数量~700。你的@X 可以更大

标签: sql sql-server


【解决方案1】:

由于变量溢出,您将需要更多位。您可以使用 float(n) 来增加位数,或者只使用使用 17 个字节的小数。

DECLARE @X decimal = @s-@e

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多