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