SQL中基于datediff和curdate函数计算列值
Posted
技术标签:
【中文标题】SQL中基于datediff和curdate函数计算列值【英文标题】:Calculating a column value based on datediff and curdate function in SQL 【发布时间】:2019-12-03 22:40:45 【问题描述】:是否可以按如下方式计算以下字段:
如果 DateDiff 中有一个整数,则 LateFee 列将由 (DateDiff * 3) 填充 如果 DateDiff 中没有值,即租金仍未结清,则当前到期的 LateFee 计算公式为 (Date_Due - current date) * 3
我正在通过存储过程进行尝试:
delimiter $$
create procedure calcLateFees()
begin
select Rental_ID as "Rental ID", Platform_ID as "Platform ID",Title_ID as "Title ID",Date_Due as "Due Date",
Date_Returned as "Returned On", Datediff(CURDATE(), Date_Due) * 3 as "Late Fee Outstanding"
from tp_rental
where month (curdate() = month(now()) and CURDATE() > Date_Due;
end $$
call calcLateFees();
我可能做错了,所以任何帮助将不胜感激。提前谢谢你。
【问题讨论】:
【参考方案1】:如果
DayDiff
中有一个整数,那么LateFee
列将由(DayDiff * 3)
填充。如果DayDiff
[...] 中没有值,则当前到期的LateFee
由(Date_Due - current date) * 3
计算
我会将其翻译为以下update
查询:
update tp_rental
set LateFee = case
when DayDiff is not null then DayDiff * 3
else datediff(date_due, curdate()) * 3
end
【讨论】:
以上是关于SQL中基于datediff和curdate函数计算列值的主要内容,如果未能解决你的问题,请参考以下文章
什么是限制(参数数量的字节数/数计),以在MySQL中FIELD()函数?
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用