在Mysql中获取特定月份的给定数据范围内的周数

时间:2014-02-21 05:37:18

标签: mysql

我想根据给定日期显示每周用户记录, 我假设我给的是日期范围'2014-01-24', 这个日期将在哪一周

示例:第1周,第2周,第3周,第4周,

我正在使用查询,

select weekday(date);

6 个答案:

答案 0 :(得分:0)

使用WEEK(date[,mode])提供的Week Function MySQL

答案 1 :(得分:0)

SELECT WEEK('2014-01-24');
+--------------------+
| WEEK('2014-01-24') |
+--------------------+
|                  3 |
+--------------------+
1 row in set (0.00 sec)

答案 2 :(得分:0)

我不确定我是否正确理解了您的问题,但我认为您需要使用“DAYOFMONTH”功能而不是“WEEKDAY”。获得DAYOFMONTH后,使用除法运算符找出您所在的周#。

例如:

SELECT DAYOFMONTH('2007-02-22');

将返回22。

22 / 7 = 3, so you are in week 3.

编辑:此答案基于查找给定月份的周数。其他答案显示“WEEK”功能,该功能将给出与给定年份相关的周数。

答案 3 :(得分:0)

WEEK(date[,mode])此函数返回日期的周数

 SELECT WEEK('2014-01-24') as numberofweeks;

SQL fiddle

enter image description here

答案 4 :(得分:0)

WEEK(date[,mode])

此函数返回日期的周数。 WEEK()的双参数形式使您能够指定周是在星期日或星期一开始,以及返回值是否应该在0到53或1到53的范围内。

mysql> SELECT WEEK('2014-01-24');
-> 3

即; 第3周

答案 5 :(得分:0)

我做了些什么,也许这可以帮助你,但周数根据周开始而有所不同,例如:在巴西,这周从周日开始。所以,看看这是否可以解决您的问题。

SET @date:='2014-08-31';
SELECT 
    @first := date_add(
        date_add(
            LAST_DAY(@date),
            interval 1 DAY
        ),
        interval -1 MONTH
    ) AS first_day,
    @date,
    -- EXAMPLE 1
    WeekofYear(@date),
    WeekofYear(@first),
    WeekofYear(@date)-(WeekofYear(@first)-1) Num_Week,
    -- EXAPLE 2 - Works in Brazil perfectly
    Week(@date),
    Week(@first),
    Week(@date)-(Week(@first)-1) Num_Week_Brazil