вычисление последних 5 лет с текущей даты в улье - PullRequest
0 голосов
/ 25 мая 2018

Мне нужно рассчитать некоторое количество на основе заданного периода времени. Мне нужно учитывать даты между текущей датой и последними 5 годами.

select count(*) from table where (year(current_date) -year('2015-12-01')) < 5 ;

. Приведенный выше запрос даст счет за последние 5 лет, однако он будет учитыватьтолько часть года, но мне нужны точные подсчеты с учетом дней, поэтому, если я напишу

 select count(*) from table where datediff(current_date,final_dt) <= 1825 ;

, он не будет учитывать високосные годы, если таковые имеются за последние 5 лет

, поэтому есть ли какая-либо функция вулей для расчета точной разницы между двумя датами рассмотрим сценарии, такие как високосные годы?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Используйте функцию add_months (при условии, что даты должны вернуться к 2013-05-25 с текущей датой 2018-05-25).

select count(*) 
from table
where final_dt >= add_months(current_date,-60) and final_dt <= current_date
0 голосов
/ 25 мая 2018

Я думаю, что вы пытаетесь вычислить count(*) все записи между current_date и датой, которая 5 лет назад от current_date, в этом случае вы можете сделать что-то вроде этого:

SELECT count(*) FROM table_1 WHERE date_column BETWEEN current_date AND to_date(CONCAT(YEAR(current_date) - 5, '-', MONTH(current_date), '-', DAY(current_date)));

И SELECT datediff( current_date() ,to_date(CONCAT(YEAR(current_date) - 5, '-', MONTH(current_date), '-', DAY(current_date))));

дает вам 1826 (учитывая тот факт, что 2016 год является високосным).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...