Как вы узнаете, что DayOfTheWeek имеет дату и время в MySql? - PullRequest
0 голосов
/ 01 декабря 2009

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

Ответы [ 2 ]

5 голосов
/ 01 декабря 2009

A чисто арифметическая формула is

SELECT ((DAYOFWEEK(myDate) + 5) % 7) + 1 AS MondayBasedDOW

Хотя в SQL мы часто решаем это с помощью оператора CASE (ответ Астендера)

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 голос
/ 01 декабря 2009

Вы можете попробовать СЛУЧАЙ, КОГДА n = 1, ТО 7, ДРУГОЕ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...