MySQL DAYOFWEEK () - моя неделя начинается в понедельник

Последний IDE Netbeans (6.1) имеет довольно серьезную поддержку Ruby.

можно проверить его здесь .

45
задан picca 29 July 2009 в 20:43
поделиться

4 ответа

Используйте WEEKDAY () вместо DAYOFWEEK () , он начинается в понедельник.

Если вам нужно начать с индекса 1, используйте или WEEKDAY () + 1 .

109
ответ дан 26 November 2019 в 20:53
поделиться

Как насчет вычитания единицы и изменения Sunday

IF(DAYOFWEEK() = 1, 7, DAYOFWEEK() - 1)

Of конечно, вам придется делать это для каждого запроса.

7
ответ дан 26 November 2019 в 20:53
поделиться

Можно написать udf и принять значение, указывающее, какой день недели должен быть 1, будет выглядеть так (на основе ответа от Джон, чтобы использовать MOD вместо CASE) :

DROP FUNCTION IF EXISTS `reporting`.`udfDayOfWeek`;
DELIMITER |
CREATE FUNCTION `reporting`.`udfDayOfWeek` (
  _date DATETIME,
  _firstDay TINYINT
) RETURNS tinyint(4)
FUNCTION_BLOCK: BEGIN
  DECLARE _dayOfWeek, _offset TINYINT;
  SET _offset = 8 - _firstDay;
  SET _dayOfWeek = (DAYOFWEEK(_date) + _offset) MOD 7;
  IF _dayOfWeek = 0 THEN
    SET _dayOfWeek = 7;
  END IF;
  RETURN _dayOfWeek;
END FUNCTION_BLOCK

Чтобы вызвать эту функцию, чтобы получить значение текущего дня недели, когда ваша неделя начинается, например, во вторник, вы должны позвонить:

SELECT udfDayOfWeek(NOW(), 3);

Хорошая вещь о наличии это как udf, вы также можете вызвать его в поле набора результатов следующим образом:

SELECT
  udfDayOfWeek(p.SignupDate, 3) AS SignupDayOfWeek,
  p.FirstName,
  p.LastName
FROM Profile p;
1
ответ дан 26 November 2019 в 20:53
поделиться

Попробуйте использовать функцию WEEKDAY () .

Возвращает индекс дня недели для даты (0 = понедельник, 1 = вторник,… 6 = Воскресенье).

18
ответ дан 26 November 2019 в 20:53
поделиться
Другие вопросы по тегам:

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