如何使用 mysql 中的周数获取开始和结束周日期?
How to get start and end week date using week number in mysql?
我可以很容易地得到开始日期和周末,如下所示。
SELECT
COUNT(*) AS reports_in_week,
DATE_ADD(mydate, INTERVAL(1-DAYOFWEEK(mydate)) DAY),
DATE_ADD(mydate, INTERVAL(7-DAYOFWEEK(mydate)) DAY)
FROM mytable
where WEEK(mydate,1) = '29'
GROUP BY WEEK(mydate,1)
但问题是列日期的大小写索引不起作用,如果我在索引之间传递日期范围将起作用,我尝试使用周数获取一周的开始日期和结束日期;
我是 mysql 的初学者,请帮忙。
如果您想在给定的周 和年份 上进行过滤,那么一种选择是使用 str_to_date()
从年份和周数生成日期范围:
where
mydate >= str_to_date('2020-29 Monday', '%Y-%u %W')
and mydate < str_to_date('2020-29 Monday', '%Y-%u %W') + interval 7 day
%u
说明符表示周数,星期一是一周的第一天(因此这类似于查询使用的模式 1
中的 WEEK()
)。
上面的 where
谓词将利用 mydate
上的索引 - 这似乎是您的目的。
我可以很容易地得到开始日期和周末,如下所示。
SELECT
COUNT(*) AS reports_in_week,
DATE_ADD(mydate, INTERVAL(1-DAYOFWEEK(mydate)) DAY),
DATE_ADD(mydate, INTERVAL(7-DAYOFWEEK(mydate)) DAY)
FROM mytable
where WEEK(mydate,1) = '29'
GROUP BY WEEK(mydate,1)
但问题是列日期的大小写索引不起作用,如果我在索引之间传递日期范围将起作用,我尝试使用周数获取一周的开始日期和结束日期;
我是 mysql 的初学者,请帮忙。
如果您想在给定的周 和年份 上进行过滤,那么一种选择是使用 str_to_date()
从年份和周数生成日期范围:
where
mydate >= str_to_date('2020-29 Monday', '%Y-%u %W')
and mydate < str_to_date('2020-29 Monday', '%Y-%u %W') + interval 7 day
%u
说明符表示周数,星期一是一周的第一天(因此这类似于查询使用的模式 1
中的 WEEK()
)。
上面的 where
谓词将利用 mydate
上的索引 - 这似乎是您的目的。