Учитывая дату в MySQL, как я могу определить относительное начало недели? - PullRequest
1 голос
/ 01 июня 2011

В моей таблице есть столбец date_time.

Как мне получить дату начала недели, т.е. дата 2011-01-09 13:44:00 вернет 2011-01-07 00:00:00?

Я просмотрел Функции MySQL Date , но не смог понять, как это сделать.

Я попробовал что-то вроде этого ...

DATE_ADD( YEAR( NOW( ) ) , INTERVAL WEEK( NOW( ) ) WEEK ) AS `start_of_week` 

Но все, что я получил, было NULL.

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 01 июня 2011
SELECT DATE_ADD( DATE( NOW() ) , INTERVAL -WEEKDAY( NOW() ) DAY ) AS `start_of_week` 

Возвращает 2011-05-30, поэтому будет хорошо, если ваш первый день недели понедельник, в противном случае вам следует вычесть еще один день.

Я не уверен, что вы использовали неделю / год

1 голос
/ 01 июня 2011

Если вы не возражаете, сначала конвертируйте в Date (из DateTime)

DATE_ADD(mydate, INTERVAL(1-DAYOFWEEK(mydate)) DAY)

Также возможна функция STR_TO_DATE . Укажите его, объединяя год и неделю, а затем желаемый формат строки-даты, который затем можно преобразовать в дату-время.

SELECT STR_TO_DATE('201003 Monday', '%X%V %W');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...