【发布时间】:2021-05-26 09:21:39
【问题描述】:
我在 SQL 服务器中有一个计算到期金额的函数。 我已将数据库迁移到 Postgres,但我无法在 Postgres 中使用该功能,因为这两个数据库具有不同的架构和语法。 我是 Postgres 的新手,我不知道如何从 SQL 服务器迁移 Postgres 中的该功能。 这是函数,请帮我转换一下。
CREATE FUNCTION "CalcDue"(
"@duedate" datetime,
"@latefee" decimal,
"@limit" decimal
)
RETURNS decimal
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
begin
DECLARE @days int
DECLARE @TotalLateFee decimal
SET @days = DateDiff(DAY,@duedate,DATEADD(MINUTE,330,GETUTCDATE()))
if @days < 0 set @days = 0
SET @TotalLateFee = @days * @latefee
if @TotalLateFee > @limit
return @limit
else return @TotalLateFee
return isnull(@TotalLateFee,0)
end
谢谢!!
【问题讨论】:
-
DateDiff(DAY,@duedate,DATEADD(MINUTE,330,GETUTCDATE()))到底是做什么的? -
DateDiff() 查找日期差异
-
@duedate - (date.now +5 小时) 是这样的
-
days是一个整数。如果duedate和 now + 5 hours 之间的差是4 days 23 hours and 20 minutes怎么办?那应该只有4天吗?还是舍入到 5 天? -
@duedate 是函数中的参数
标签: database postgresql function