У меня есть таблица с 2 полями 'даты и времени': 'eventDate' и 'eventHour'. Я пытаюсь заказать 'eventDate' и затем 'eventHour'.
Для каждой даты у меня будет список событиями OS, так вот почему я желание заказать по дате и затем ко времени.
спасибо!!
Я не уверен, есть ли какой-нибудь скрытый смысл в вашем вопросе, но стандартный способ сделать это кажется подходящим:
... order by eventDate, eventHour
Это дает вам часы в пределах дат, например:
Feb 15
09:00
12:00
17:00
Feb 23
22:00
: :
Если на самом деле у вас есть эти два поля как поля real datetime
, ваша схема испорчена. У вас должно быть поле дата
для даты и время
или целое поле для часа.
Вы можете объединить оба в одно поле datetime
, но вы должны сбалансировать это с неэффективностью выполнения построчных функций в ваших инструкциях select
, если вы хочу их разделить. Обычно лучше хранить поля отдельно, если вы собираетесь их использовать отдельно.
Если вы действительно должны использовать построчные функции, вы можете использовать:
date(datetime_column)
time(datetime_column)
для извлечения только компонентов даты и
и времени
из datetime
.
Вы можете заказать столько, сколько вам нужно, просто используйте список. Он будет отсортирован по первому значению, затем по второму ... и т. Д.
SELECT *
FROM table
ORDER BY eventDate, eventHour
Если у вас есть два поля даты и времени, вы можете получить только дату или час, используя что-то вроде:
SELECT *
FROM table
ORDER BY DATE_FORMAT(eventDate, '%d'), DATE_FORMAT(eventHour, '%h')
Почему бы не сохранить оба eventDate
и eventHour
в одном поле, если они оба DateTime
?
Чтобы получить желаемое с текущим схему можно сделать так:
SELECT * FROM table
ORDER BY
EXTRACT(YEAR_MONTH FROM eventDate),
EXTRACT(DAY FROM eventDate),
EXTRACT(HOUR FROM eventHour)
Не работает ли
select * from my_table order by eventDate, eventHour
?