Вот грязная альтернатива, которую я использую, если не запускаю ее для массивного набора данных.
Select CHARINDEX(SUBSTRING('Thursday',1,3), 'MONTUEWEDTHUFRISATSUN') / 3 + 1
Просто замените четверг на выбранный вами день или переменную.
Как это работает: SUBSTRING ('Thursday', 1,3) в основном создает Thu, затем charindex определяет положение thu в строке, равной 10. Затем мы делим 10 на длину наших дневных слов, равную 3, что равно 3, и потому что я хочу
Понедельник равен 1
Вторник равен 2
Среда равняется 3
Четверг равен 4
Я добавляю 1 в конец
поэтому результат равен 4.
Надеюсь, это кому-то поможет, но я согласен, что, возможно, это не лучшее решение.
Примечание: Вы также можете заказать набор результатов по номеру дня, используя его следующим образом:
SELECT ID,DayNamesColumn from mytable ORDER BY CHARINDEX(SUBSTRING(DayNamesColumn ,1,3), 'MONTUEWEDTHUFRISATSUN') / 3 + 1