отображение недели по дате - PullRequest
0 голосов
/ 14 февраля 2012

Вот что у меня есть

 date
+++++++++++++
 2012-02-01
 2012-02-03
 2012-02-05
 2012-02-07
 2012-02-08
 2012-02-10
 2012-02-14
 2012-02-15
 2012-02-17
 2012-02-17
 2012-03-01
 2012-03-03
 2012-03-05
 2012-03-07

То, что я хочу, это как показано ниже

week| date
++++++++++++++++++
  1 | 2012-02-01
  1 | 2012-02-03
  1 | 2012-02-05
  1 | 2012-02-07
  2 | 2012-02-08
  2 | 2012-02-10
  2 | 2012-02-14
  3 | 2012-02-15
  3 | 2012-02-17
  3 | 2012-02-17
  4 | 2012-03-01
  4 | 2012-03-03
  4 | 2012-03-05
  4 | 2012-03-07

Я пытался

SELECT WEEKDAY(date) AS week, date
FROM myTable
WHERE date BETWEEN start_date AND end_date
ORDER BY week

А ниже вот что я получаю

week| date
++++++++++++++++++
  1 | 2012-02-01
  1 | 2012-02-03
  1 | 2012-02-05
  1 | 2012-02-07
  1 | 2012-03-01
  1 | 2012-03-03
  1 | 2012-03-05
  1 | 2012-03-07
  2 | 2012-02-08
  2 | 2012-02-10
  2 | 2012-02-14
  3 | 2012-02-15
  3 | 2012-02-17
  3 | 2012-02-17

, что неверно, поскольку 2012-03-01 и далее показывает как 1, что должно быть 4 ... Дайте мне знать, где я ошибаюсь ...

Заранее спасибо !!!

Этот вопрос относится к этому

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

Использование WEEKDAY WEEKOFYEAR

SELECT WEEKOFYEAR(date) AS week, date
FROM myTable
WHERE date BETWEEN start_date AND end_date
ORDER BY week

ОБНОВЛЕНИЕ Этот вопрос является источником

SELECT  (WEEK(date, 5) -
        WEEK(DATE_SUB(date, INTERVAL DAYOFMONTH(date) - 1 DAY), 5) + 1) as week, date
    FROM myTable
    WHERE date BETWEEN start_date AND end_date
    ORDER BY week

ОБНОВЛЕНИЕ 2

SELECT  (WEEK(date, 1) -
        WEEK(DATE_SUB(date, INTERVAL DAYOFMONTH(date) - 1 DAY), 1) + 1) as week, date
    FROM myTable
    WHERE date BETWEEN start_date AND end_date
    ORDER BY week
0 голосов
/ 14 февраля 2012

Я нашел решение ...

Ниже даст мне то, что я хочу ...

SELECT (SELECT COUNT(distinct u2.myDate) FROM myTable u2
WHERE 
u2.myDate > u1.myDate) + 1 AS week, myDate FROM myTable u1
WHERE myDate between startDate AND endDate
ordeR BY week

Обновление 1:

Ниже то, что у меня есть

myDate
+++++++++++++++++++++
2012-02-01 12:12:12
2012-02-01 12:12:12
2012-02-01 12:12:12
2012-02-03 12:12:12
2012-02-05 12:12:12
2012-02-07 12:12:12
2012-02-08 12:12:12
2012-02-08 12:12:12
2012-02-10 12:12:12
2012-02-14 12:12:12
2012-02-15 12:12:12
2012-02-17 12:12:12
2012-02-17 12:12:12
2012-03-01 12:12:12
2012-03-03 12:12:12
2012-03-05 12:12:12
2012-03-07 12:12:12

Используя приведенный выше запрос, я получаю следующее.

week |myDate
+++++++++++++++++++++++++++
  1  |2012-03-07 12:12:12
  2  |2012-03-05 12:12:12
  3  |2012-03-03 12:12:12
  4  |2012-03-01 12:12:12
  5  |2012-02-17 12:12:12
  5  |2012-02-17 12:12:12
  6  |2012-02-15 12:12:12
  7  |2012-02-14 12:12:12
  8  |2012-02-10 12:12:12
  9  |2012-02-08 12:12:12
  9  |2012-02-08 12:12:12
  10 |2012-02-07 12:12:12
  11 |2012-02-05 12:12:12
  12 |2012-02-03 12:12:12
  13 |2012-02-01 12:12:12
  13 |2012-02-01 12:12:12
  13 |2012-02-01 12:12:12
0 голосов
/ 14 февраля 2012

Если я выполню этот запрос, я получу этот результат.в эти первые два дня одинаковы, но я получаю другой номер недели :(Это мой результат:ВЕС |Неделя |СОЗДАНО НА 60 |2 |2012-02-08 16: 16: 32 200 |3 |2012-02-08 16: 16: 30 63 |4 |2012-02-01 16:16:3270 |5 |2012-01-25 16:16:3275 |6 |2012-01-17 16:16:3260 |7 |2012-01-08 16:16:3263 |8 |2012-01-01 16:16:3270 |9 |2011-12-25 16:16:3275 |10 |2011-12-17 16:16:3260 |11 |2011-12-08 16:16:3263 |12 |2011-12-01 16:16:3260 |12 |2011-12-01 16:16:3270 |14 |2011-11-23 16:16:3275 |15 |2011-11-17 16:16:3263 |16 |2011-11-01 16:16:32Сожалею!Я новичок в стеке потока и MySQL извините за неудобный синтаксис stackOverFlow.

...