Сортировка SQL по году-месяцу с отметки времени

0

У меня есть таблица с двумя временными метками (made_at, Verified_at)

Я хочу отсортировать свой результат по году и месяцу созданного_тата и в течение месяца по подтвержденному адресу:

Данные:

created_at, confirmed_at
2018-12-23, 2018-12-06
2018-12-15, 2019-01-20
2019-01-08, 2019-01-11
2019-01-12, 2019-01-13

Результат:

created_at, confirmed_at
2019-01, 2019-01-13
2019-01, 2019-01-11
2018-12, 2019-01-20
2018-12, 2018-12-06

Как я могу использовать временную метку для сортировки по ГГГГ-мм (и как я могу сделать это быстро → как я могу индексировать для этого запроса?)

Теги:
timestamp
sorting
order

1 ответ

2

С функциями year() и month():

select 
  year(created_at) created_year, 
  month(created_at) created_month, 
  confirmed_at 
from t
order by created_year, created_month, confirmed_at

или если вы хотите только часть YYYY-MM:

select DATE_FORMAT(created_at, "%Y-%m"), confirmed_at from t
order by year(created_at), month(created_at), confirmed_at

или же:

select DATE_FORMAT(created_at, "%Y-%m") created, confirmed_at from t
order by created, confirmed_at

или же:

select DATE_FORMAT(created_at, "%Y-%m") created, confirmed_at from t
order by EXTRACT(YEAR_MONTH FROM created_at), confirmed_at
  • 0
    это занимает несколько секунд. Могу ли я создать индекс с помощью функции год / месяц?
  • 0
    Вы не можете создавать индексы для функций, только для столбцов. Попробуйте мой отредактированный ответ (3D-запрос)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню