Как посчитать количество дней, месяцев, годов, имея даты в таблице mysql
Есть таблица
| id | date | price |
Даты бывают разные:
2022-08-16 18:03:04
2022-08-16 18:08:03
2022-08-10 13:25:39
2022-08-20 13:39:25
Я не могу найти как их посчитать.
Нужно:
- Дней - 3
- Месяцев 1
- Годов - 1
Я просто не могу ни чего придумать, а в интернете только о том как получить между датами количество дней. Помогите пожалуйста!
Ответы (2 шт):
Смог после некого размышления. Не знаю хорошо ли получилось, но у меня как я хотел, так и работает.
SELECT count(DISTINCT DAY(date)) as date FROM table
Я просто не учитывал дубликаты, поэтому count считал все мои дубликаты дат.
Но вот минус в том что, если года, месяца, разные, а дни одинаковые, то они их засчитывать не будут а удаляться как дубликаты.
Я только что попробовал использовать так:
SELECT count(DISTINCT DATE_FORMAT(date, '%Y-%m-%d')) as date FROM table
Теперь учитывается полная дата. Больше ни как не смог придумать
Попробуйте функцию EXTRACT(part FROM date) аргумент part заменяется на YEAR и MONTH. Можно вывести для записей года, месяца, дни. Оконкой посчитать года, месяца, дни, т.к. группировка схлопнет дубли и нормально посчитает.
Можно дату в строку преобразовать, порезать на 3 варианта (год, год+мес, год+мес+день), сгруппировать и посчитать.