MySQL - 如何在几年内制作 DATEDIFF?

MDF*_*MDF 3 mysql trigger date

这是我的第一篇文章(英语不是我的母语)所以我希望我不会把这篇文章搞砸。

我是 MySQL 的新手,但我从 100 多个 youtube 教程和您的大量帖子中学到了很多东西。我使用 PHPmyadmin 和 MySQL Workbench 设计了我的数据库。

在我的表subventions(grants) 中,我创建了一个触发器,以便能够使用我的列subventions.début(beginning)、subventions.fin(end) 和subventions.montant(amount)来计算每年的赠款金额。

因为DATEDIFF只给了我几天的答复,我天真地以为我只需要除以365天就能得到我的答复。如果我的开始日期是 1 月 1 日,结束日期是 12 月 31 日,它会起作用,但如果它在一年中的其他地方出现,则不起作用。这是我的触发器:

SET NEW.montant_annuel = NEW.montant / (datediff(NEW.fin,NEW.début)/365)
Run Code Online (Sandbox Code Playgroud)

这是我的表格和“montant_annuel”列中的结果: 表 : 补助金

如果我使用 365.25(这是一年中的“真实”天数),它也不起作用。

谢谢!:)

小智 5

是的,TIMESTAMPDIFF 是最好的方法:

select TIMESTAMPDIFF(year,'2011-01-01', now() ) ;  --> 4
select TIMESTAMPDIFF(year,'2011-08-28', now() ) ;  --> 4 
select TIMESTAMPDIFF(year,'2011-09-01', now() ) ;  --> 3
Run Code Online (Sandbox Code Playgroud)