【问题标题】:displaying week as per date按日期显示星期
【发布时间】:2012-03-05 18:34:01
【问题描述】:

以下是我所拥有的

 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...让我知道我错在哪里...

提前致谢!!!

此问题与this有关

【问题讨论】:

    标签: mysql datetime date


    【解决方案1】:

    在使用 WEEKDAY 时使用 WEEKOFYEAR

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

    更新 This question is the source

    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
    

    【讨论】:

    • 看这个:这个问题是你的答案:stackoverflow.com/questions/785206/…
    • 你可以在week mysql函数(dev.mysql.com/doc/refman/5.5/en/…)中使用mode参数来改变这个。
    • 一年的第一周你会宣布什么? 0 周日 0-53,今年有周日 1 周一 0-53,今年有 3 天以上 2 周日 1-53,今年有周日 3 周一 1-53,今年有 3 天以上 4 周日 0- 53 今年有 3 天以上 5 星期一 0-53 今年有星期一 6 星期日 1-53 今年有 3 天以上 7 星期一 1-53 今年有星期一
    • 这就是瑜伽士所说的“1 星期一 0-53,今年有 3 天以上。我已经宣布了这一天”
    【解决方案2】:

    如果我运行这个查询,我会得到这个结果。在前两天是相同的,但我得到不同的周数:(

    这是我的结果:

    重量|周| CREATED_ON
    60 | 2 | 2012-02-08 16:16:32
    200| 3 | 2012-02-08 16:16:30
    63 | 4 | 2012-02-01 16:16:32
    70 | 5 | 2012-01-25 16:16:32
    75 | 6 | 2012-01-17 16:16:32
    60 | 7 | 2012-01-08 16:16:32
    63 | 8 | 2012-01-01 16:16:32
    70 | 9 | 2011-12-25 16:16:32
    75 | 10 | 2011-12-17 16:16:32
    60 | 11 | 2011-12-08 16:16:32
    63 | 12 | 2011-12-01 16:16:32
    60 | 12 | 2011-12-01 16:16:32
    70 | 14 | 2011-11-23 16:16:32
    75 | 15 | 2011-11-17 16:16:32
    63 | 16 | 2011-11-01 16:16:32
    对不起!我是 stack over flow 的新手,对于不方便的 stackOverFlow 语法,我很抱歉。

    【讨论】:

    • 更新的 2 答案和您的 第一个答案 都给出了相同的结果 Fahim。 更新的 1 答案接近我的预期。但我上面提到的结果喜欢(同一日期差异周)。
    • 对不起 Tim 和 Fahim,我在旧问题中发布了我的回放。
    • 1 星期一 0-53,今年超过 3 天。这个我已经宣布提姆了。
    • 我不能在那里重播。添加推荐只在这里。还有其他选择吗?
    【解决方案3】:

    我找到了解决方案...

    下面会给我我想要的...

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多