Вопрос по sql-server-2008 – Можно ли выбрать конкретный ORDER BY в SQL Server 2008?

13

У меня есть таблица, которая содержит дни и времена, столбец дня, в который можно ввести любой из семи дней, и они настроены на тип данныхvarchar, Поскольку в этой таблице указано время бронирования для клиента, я хочу выбрать все дни из таблицы, в которой совпадает идентификатор, и отсортировать по дням с понедельника по воскресенье. Я надеялся, что смогу добавить что-то к этому запросу, чтобы вручную выбрать порядок, в котором возвращаются результаты, вот так:

<code>select * 
from requirements 
where Family_ID = 1 
ORDER BY Day, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
</code>

Это, конечно, не работает, но я просто хотел показать, чего я пытаюсь достичь. Клиент не обязательно нуждается в помощи каждый день, я просто хочу показать дни, в которые он забронирован.

Сортировка по DESC и ASC не помогает по дням недели, я был бы признателен за любые советы о том, как этого добиться.

Благодарю.

Поможет ли использование функции DATEPART (weekday, @ dtDate)? Это даст вам дни недели в виде чисел Chetter Hummin

Ваш Ответ

2   ответа
34

дни сохраняются как дословно "понедельник", "вторник" и т. Д.?

В любом случае, просто сделайте это:

SELECT * 
FROM Requirements
ORDER BY 
     CASE Day 
     WHEN 'Monday' THEN 1
     WHEN 'Tuesday' THEN 2
     WHEN 'Wednesday' THEN 3
     WHEN 'Thursday' THEN 4
     WHEN 'Friday' THEN 5
     WHEN 'Saturday' THEN 6
     WHEN 'Sunday' THEN 7
     END
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded deucalion0
Error: User Rate Limit ExceededCASE WHENsError: User Rate Limit Exceededmssqltips.com/sqlservertip/1682/… blog.sqlauthority.com/2010/08/13/…
Error: User Rate Limit ExceededORDER BY DATEPART(WEEKDAY, DateTimeFieldHere)Error: User Rate Limit ExceededORDER BY DateTimeFieldHere
Error: User Rate Limit Exceeded deucalion0
1

Monday, Tuesday, etc ... Если вы сохраняете значение даты или даты и времени, вы всегда можете извлечь название дня недели из этих данных во время запроса, когда вам это нужно - либо используяDATENAME в вашем запросе или с использованием функциональности на уровне презентации. Затраты на производительность при этом не оправдывают хранение отдельно ИМХО. И вы все равно должны быть в состоянии правильно сортировать, используя собственные данные даты / времени.

Похожие вопросы