Учитывая столбец datetime в mysql 5, я хочу узнать день недели?
Но функция DAYOFWEEK возвращает 1 для воскресенья.
Я хочу 1 обозначить понедельник, 2 дня и т.д. и 7, чтобы обозначить воскресенье.
Существует ли однострочный (который может быть встроен в более крупный оператор SQL), который реализует эту функцию?
f(x) => y
such that:
f(1) = 7
f(n) = n-1 for n in range [2,7]
A чисто арифметическая формула -
SELECT ((DAYOFWEEK(myDate) + 5) % 7) + 1 AS MondayBasedDOW
Хотя в SQL мы часто решаем это с помощью оператора CASE (cf astender answer)
SELECT CASE WHEN DAYOFWEEK(myDate) = 1 THEN 7 ELSE DAYOFWEEK(myDate) -1 END
AS MondayBasedDOW
Теперь... MySQL также предоставляет функцию WEEKDAY(), которая похожа на DAYOFWEEK(), но есть
то есть. Понедельник = 0, вторник = 1... воскресенье = 6
Поэтому вы можете просто использовать
SELECT WEEKDAY(myDate) + 1 AS MondayBasedDOW
но, конечно, гораздо менее забавно, чем использование арифметики по модулю; -)
Вы можете попробовать CASE WHEN n = 1 THEN 7 ELSE n -1 END