Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中,如何返回每月的一周?_Mysql - Fatal编程技术网

在MySQL中,如何返回每月的一周?

在MySQL中,如何返回每月的一周?,mysql,Mysql,一年分为12个月。我们可以在四个星期内把一个月分解 在MySQL中,如何返回每月的一周?(示例:第一周:2个条目,第二周:5个条目,第三周:3个条目;第四周:8个条目) 使用Week和WeekOfYear无法获得所需的结果,因为函数返回的周数是YEAR,而不是month FLOOR((DayOfMonth(dateCol)-1)/7)+1 我想明确指出,这可能不是划分数据的好方法-(请参阅注释),但这将使您尽可能接近数据。使用MySQL内置函数week查找一年的周数,然后减去当月第一天的周数

一年分为12个月。我们可以在四个星期内把一个月分解

在MySQL中,如何返回每月的一周?(示例:第一周:2个条目,第二周:5个条目,第三周:3个条目;第四周:8个条目)

使用Week和WeekOfYear无法获得所需的结果,因为函数返回的周数是YEAR,而不是month

FLOOR((DayOfMonth(dateCol)-1)/7)+1

我想明确指出,这可能不是划分数据的好方法-(请参阅注释),但这将使您尽可能接近数据。

使用MySQL内置函数week查找一年的周数,然后减去当月第一天的周数

SELECT WEEK('2012-02-20') - WEEK('2012-02-01')
文档中有很多选项可以定制呼叫,以完全满足您的需求,但我希望我的示例能让您了解您可以使用的功能

每月的一周(其中开始的不完整的一周作为一个整体计算)

或者你可以看到

返回特定月份的确切周数

选择
(周('2020-09-27')-周(日期格式('2020-09-27','%Y-%m-01'))+1

这并不准确。这12个月平均每个月有4.3周。一年有52周(有时是53周),而不是48周。计算周是一件很麻烦的事,如果你说一个月有4周,你也会说一年有48周,这是错误的。看看MySQL的周交互功能:在大多数月份,你要么有一个部分的“第5周”,即2天或3天,要么把额外的几天滚动到第四周。如果你在做某种类型的分析,无论哪种方式,你的数据都会受到影响。在这种情况下,最好每天或每月进行一次,或者使用一年中的一周而不是一个月中的一周。这是不对的,没有给出一周中的数字,可以是1、2、3、4或5。@Julestroung你怎么计算?如果你的月从周五开始,日期是第4天,那么你应该在第2周,但这只计算从第1天开始的7天周期;因此,它将返回1。它不返回日期的星期部分。这取决于“每月的星期”的定义。如果定义了“周”,例如从星期日到星期六,则正确的方法是使用函数week()(见下文)。但是,如果将“周”定义为每月的第1天到第7天(=第一周),然后是第8天到第14天(=第二周),依此类推,则此方法是正确的。我个人更喜欢后一种方法,因为它定义得很好,但是对于“一年中的一周”的week()函数,我喜欢这种方法,但它有一个缺点。对于表中的给定字段,它应该是
SELECT WEEK('2012-02-20')-WEEK('2012-02-01')+1
WEEK(birth_date)-WEEK(date_FORMAT(birth_date)(birth_date),%Y-%m-01')
To_CHAR在回答具有可接受答案的旧问题之前,在MySQL中不是一个函数(寻找绿色)✓) 和其他答案一样,确保你的答案添加了新的内容,或者与之相关的其他方面有所帮助。以下是一个关于这些内容的指南。
select ceiling((day(now()) - 
(6 - weekday(date_format(now(),'%Y-%m-01'))))/7) 
+ case when 6 - weekday(date_format(now(),'%Y-%m-01'))> 0 
then 1 else 0 end week_of_month;
SELECT WEEK(my_date_field,5) - WEEK(DATE_SUB(my_date_field, 
INTERVAL DAYOFMONTH(my_date_field) - 1 DAY),5) + 1
TO_CHAR(my_date, 'W')