文档章节

MySQL的跨年周统计问题

chro008
 chro008
发布于 2018/02/08 14:19
字数 571
阅读 405
收藏 2

在mysql中,如果要查询的表中只有日期字段,但是业务需求要按照周分组,排序的话,mysql提供了多种方法; 1。date_format DATE_FORMAT(date, format) 函数根据format字符串格式化date值。 这里可以使用 date_format(date,"%Y-%U")将日期格式化为year-week的方式(注意大小写,Y、U以及更多格式化支持的字符串可以百度或者参考下方文章链接), 然后在分组排序就很简单了,不过这里有一个问题,就是标题所示,跨年使用这种方式; 在mysql中执行下列语句:

select date_format("2017-12-31","%Y-%U"),date_format("2018-1-1","%Y-%U");

结果显示如下 输入图片说明

%U代表的是第0周开始的,使用星期天作为一周的第一天,当遇到本年的第一个星期天时,就是第 1 周了,今年第一个星期天之前的天数就当做今年的第0周 当遇到同一周跨年的时候,12月份的算作去年的最后一周,1月份的算作今天的第0周就不对了, 如2017-12-31和2018-01-01是在同一周(周日-周六为同一周),所以这种方法有误 可以用格式符%X-%V代替

select date_format("2017-12-31","%X-%V"),date_format("2018-1-1","%X-%V");

结果显示如下 输入图片说明 %V 与 %U 一样的地方就是也是使用周日作为一周的开始,并且也是遇到第一个周日开始算作是第一周,但是这两个对这个下一年第一个周日之前的这几天处理不一样,%U是把下一年之前的几天算作第0周而%V是把下一年之前的几天算作上一年的最后一周,所以使用%X-%V这样的格式符就能解决问题

2.YEARWEEK .MySQL 的 YEARWEEK 是获取年份和周数的一个函数,函数形式为 YEARWEEK(date[,mode]) mode的值从0-7,分别指示每周的第一天是周几,具体可以百度或者参考下方链接文章

select YEARWEEK("2017-12-31",),YEARWEEK("2018-1-1");

结果显示如下 输入图片说明

参考链接 https://stackoverflow.com/questions/1736010/how-to-group-by-week-in-mysql http://blog.csdn.net/lifuxiangcaohui/article/details/50953018 http://blog.csdn.net/u010004317/article/details/54426836

© 著作权归作者所有

chro008

chro008

粉丝 5
博文 46
码字总数 19512
作品 0
海淀
程序员
私信 提问
按天、按周、按月、按季、按年分期别统计

在面对大数据量按期别统计时,数据库表中往往只有一个日期列,如果在统计时直接使用tochar函数转换成期别进行group by会导致SQL执行较慢,因为tochar后用不上索引,而大部分时候我们只建立一...

无知有趣
2014/05/23
379
0
[请教]Django中怎么使用日期函数

想要根据日期对记录进行一下统计,比如按周,月,季度,年统计一下有多少记录。但django的query set方法中只提供得到,年,月,周几的方法,请问有其他方法么?类型MYSQL中的“DATE_FORMAT”...

上越
2013/05/09
1K
4
mysql时间处理函数和多列求和

时间转化,按周,按日,按时,按年统计必备 mysql:用一条sql语句统计某一字段等于不同值的个数 应用:这个是按周查询 按日查询: 按时查询 更多函数参考: http://blog.chinaunix.net/uid-11...

mifans
2016/12/28
218
0
数据统计系统设计思路遇挫,求救.

按照惯例,先描述场景. 首先此系统是用来统计的,对用户数据进行统计.要求可以按小时,日,周,月来查询. 每日有200w+的用户量,按照每个用户有20个操作来算.要处理4000w+的请求. 一 最早的想法,是...

大苹果
2011/05/06
821
5
My97 DatePicker 4.8 发布,日期选择控件

My97 DatePicker 4.8 已发布,My97 DatePicker 是一个 JavaScript 的日历选择控件。 更新如下[2017-7-30]: [新增]单日时间段限制 [新增]preload预载选项 [新增]时分秒选择菜单的定制功能,详...

xusheng1987
2017/08/02
1K
21

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部