Он должен быть упорядочен по названиям дней недели, т. Е. По вторникам на первом месте, по средам на следующем и так далее.

Вот что я сделал:

SELECT hire_date, TO_CHAR(hire_date,'Day')
FROM employee
ORDER BY TO_CHAR(hire_date,'Day');

Но заказ не начинается со вторника ...

0
Rehab 31 Май 2020 в 20:02

3 ответа

Лучший ответ

Ммм , , Вы можете сохранить дни недели вместе и заказать их, указав номер дня недели:

SELECT hire_date, TO_CHAR(hire_date, 'Day')
FROM employee
ORDER BY TO_CHAR(hire_date, 'D'), hire_date

К сожалению, это начнется в воскресенье или понедельник, в большинстве случаев. Вы можете настроить для вашей конкретной настройки, вычитая один или два дня:

SELECT hire_date, TO_CHAR(hire_date, 'Day')
FROM employee
ORDER BY TO_CHAR(hire_date - interval '1' day, 'D'), hire_date

Или вы можете быть явным:

SELECT hire_date, TO_CHAR(hire_date, 'Day')
FROM employee
ORDER BY TO_CHAR(hire_date - interval '1' day, 'D', 'NLS_DATE_LANGUAGE = English'), hire_date
0
Gordon Linoff 31 Май 2020 в 17:31

Мы можем присоединиться к Году, номеру недели и номеру дня, например, с помощью Case.

SELECT hire_date, TO_CHAR(hire_date,'fmDay')
FROM employee
ORDER BY
 TO_CHAR(hire_date,'YYYY') ||
 TO_CHAR(hire_date,'WW') ||
 CASE TO_CHAR(hire_date,'fmDay')
      WHEN 'Tuesday' THEN 1
      WHEN 'Wednesday' THEN 2
      WHEN 'Thursday' THEN 3
      WHEN 'Friday' THEN 4
      WHEN 'Saturday' THEN 5
      WHEN 'Sunday' THEN 6
      WHEN 'Monday' THEN 7
 END ASC;
0
Maheswaran Ravisankar 31 Май 2020 в 17:24

Пожалуйста, используйте ниже запрос,

SELECT hire_date, TO_CHAR(hire_date,'Day')
FROM employee
ORDER BY TO_CHAR(hire_date,'Day'), hire_date;
0
Jim Macaulay 31 Май 2020 в 17:05