MySQL 距离下次出现日期还有多少天?

MySQL number of days until next occurrence of a date?

我正在寻找一种方法来准确倒计时到圣诞节,以天数表示。我试过了...

(SELECT DATEDIFF(CONCAT(YEAR(CURDATE()), '-12-25'), NOW())) as days

然而,这将 return 圣诞节和新年之间的一个负日期。 我想如果数字是负数我可以只加 365 但这不会考虑闰年。对更好的解决方案有什么建议吗?

非常感谢!

这很粗糙,但应该可以解决问题。查看结果是否为负数,如果是则将年份加一:

Select Case DateDiff(Concat(Year(CurDate()), '-12-25'), Now())) < 0
         Then DateDiff(Concat(Year(CurDate())+1, '-12-25'), Now())) 
         Else DateDiff(Concat(Year(CurDate()), '-12-24'), Now())) End As "days"