Как вы узнаете, что DayOfTheWeek имеет дату и время в MySql?

0

Учитывая столбец 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]
Теги:
algorithm

2 ответа

5
Лучший ответ

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

но, конечно, гораздо менее забавно, чем использование арифметики по модулю; -)

1

Вы можете попробовать CASE WHEN n = 1 THEN 7 ELSE n -1 END

  • 0
    Оно работает. Потрясающие.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню