2016-11-20 2 views
1

Я ищу способ получить точный обратный отсчет до Рождества, в течение дня. Я пробовал ...MySQL количество дней до следующего появления даты?

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

Однако это вернет отрицательную дату между Рождеством и Новыми годами. Я думал, что могу просто добавить 365, если число было отрицательным, но это не будет означать високосные годы. Любые предложения для лучшего решения?

Большое спасибо!

ответ

2

Это довольно грубо, но должно сделать трюк. Посмотрите, является ли результат отрицательным, и если да, то добавьте один из них в год:

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" 
+1

Это работает отлично, не знаю, почему я не думал об использовании предложения CASE. Благодаря! – Latchy

Смежные вопросы