mysql - 按日期显示周

标签 mysql datetime date

以下是我所拥有的

 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 相关

最佳答案

使用 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

关于mysql - 按日期显示周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276085/

相关文章:

php - MySQL Count Where 子句问题

php - 如何在php文件上传中从mysql读取当前记录的id?

javascript - 有关如何将日期输入值与最小/最大日期范围进行比较的建议

java - SimpleDateFormat 无法解析的日期异常

Javascript date.getDay() 不一致

php - 如何从 MySQL 获取 JSON 信息

sql - 在查询返回的数组中查找某个名称的排名或索引

ruby-on-rails - 如何更改 Ruby on Rails 解析两位数年份输入的方式

c# - 指定 DateTime.ToString ("o") 小数精度

c# - 将 javascript gettime() 转换为 c# 日期时间