在mysql中得到当前日期是当月第几周
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mysql中得到当前日期是当月第几周相关的知识,希望对你有一定的参考价值。
具体需求是为了得出每个日期是当月的第几周。思路是如果当天是1号,则将周数变为1,如果遇到星期一,则周数+1。想问下图中的这个逻辑怎么变成sql语句来实现?
代码如下
select group_date groupDate from (SELECT
@cdate input_date,
@last_sat := date_add(date_sub(date_sub(@cdate,interval day(@cdate)-1 day),interval 1 month), interval 6-date_format(date_sub(date_sub(@cdate,interval day(@cdate)-1 day),interval 1 month),\'%w\') day) last_sat,
@this_sat := date_add(date_sub(@cdate,interval day(@cdate)-1 day), interval 6-date_format(date_sub(@cdate,interval day(@cdate)-1 day),\'%w\') day) this_sat,
@next_sat := date_add(date_add(date_sub(@cdate,interval day(@cdate)-1 day),interval 1 month), interval 6-date_format(date_add(date_sub(@cdate,interval day(@cdate)-1 day),interval 1 month),\'%w\') day) next_sat,
@last_point := if(day(@last_sat)-3>0,date_sub(@last_sat,interval 7 day),@last_sat) last_point,
@this_point := if(day(@this_sat)-3>0,date_sub(@this_sat,interval 7 day),@this_sat) this_point,
@next_point := if(day(@next_sat)-3>0,date_sub(@next_sat,interval 7 day),@next_sat) next_point ,
case
when @cdate >= @last_point and @cdate < @this_point then
concat(
\'W\',
datediff(@cdate,@last_point) div 7 + 1, \'/\',
year(@cdate),\'-\',
if(month(@last_sat)>=10,month(@last_sat),concat(\'0\',month(@last_sat)))
)
when @cdate >=@this_point and @cdate < @next_point then
concat(
\'W\',
datediff(@cdate,@this_point) div 7 + 1,\'/\',
year(@cdate),\'-\',
if(month(@this_sat)>=10,month(@this_sat),concat(\'0\',month(@this_sat))))
else
concat(
\'W\',
datediff(@cdate,@next_point) div 7 + 1,\'/\',
year(@cdate),\'-\',if(month(@next_sat)>=10,month(@next_sat),concat(\'0\',month(@next_sat))))
end
group_date
from (SELECT @cdate := #inputDate) as gd
); 参考技术A -- 查询当前日期是本月第几周
(DAY(create_date)+WEEKDAY(create_date-INTERVAL DAY(create_date) DAY)) DIV 7 + 1 参考技术B 这也需要写这么长的语句吗?
两个条件啊 1号开始到 第一个周一是第一周
其他的顺延呗
也就是一号在的那周就是当月的第一周
那你在的那周按照一号的那周建一下就是周号了啊
比如 1号是13周的周五
你是18号是十六周的周一 那你可定是15-13+1 第3周啊
有啥问题吗? 参考技术C weekofyear(curdate()) 这个出来不就是这一年的第几周
然后再按照月份分组排序下就好了
以上是关于在mysql中得到当前日期是当月第几周的主要内容,如果未能解决你的问题,请参考以下文章