DATEIME_DIFF 使用安全除法时抛出错误

DATEIME_DIFF throwing error when using safe divide

我创建了一个查询,希望在每天结束时用 每日预算 填充 table。为此,我只需要一些简单的数学运算: 每月预算/当月剩余天数。

然后,在月底,我可以对所有行求和以计算出准确的预算。

查询如下:

SELECT *,
ROUND(SAFE_DIVIDE(budget, DATETIME_DIFF(CURRENT_DATE(), LAST_DAY(CURRENT_DATE()), DAY)),2) AS daily_budget
FROM `mm-demo-project.marketing_hub.budget_manager`

执行查询时,我的结果显示为负数,根据documentation for this function,可能是结果类型溢出造成的。

查看查询的results。

我在计算四舍五入时做了一个傻瓜猜测。不用说它根本不起作用。

如何阻止我的查询返回负数?

下面使用

SELECT *,
ROUND(SAFE_DIVIDE(budget, DATETIME_DIFF(LAST_DAY(CURRENT_DATE()), CURRENT_DATE(), DAY)),2) AS daily_budget
FROM `mm-demo-project.marketing_hub.budget_manager`