在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");

结果显示如下

mysql 周_MySQL的跨年周统计问题相关推荐

  1. mysql 月的周_mysql 按月/按周集锦统计函数 DATE_FORMAT() 函数_mysql

    mysql 按月/按周汇总统计函数 DATE_FORMAT() 函数 定义和用法 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,form ...

  2. MySQL的跨年周统计问题(%X-%V)

    MySQL的跨年周统计问题 最近在做项目的时候,发现了一个报表在进行周统计并且跨年的时候会出现问题,具体问题截图如下:(主要与%X-%V的时间格式符有关) 2016-12-18 ~~ 2017-01- ...

  3. mysql 以周为单位记录数据_mysql 按月/按周汇总统计函数 DATE_FORMAT() 函数

    MySQL DATE_FORMAT() 函数 定义和用法 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. 语法 DATE_FORMAT(date,format) date 参数是 ...

  4. mysql 某个时间段之前_MySql按日期时间段进行统计(前一天、本周、某一天、某个时间段)...

    在mysql数据库中,常常会遇到统计当天的内容. 例如,在user表中,日期字段为:log_time 统计当天 sql语句为: select * from user where date(log_ti ...

  5. sql求平均日活_日活、周活(周重活)、月活 统计

    效果展示: 以上数据为测试数据 实现思路: 按照查询天数往前推规定天 比如周.月 登录表为按月分表(数据量大约一张表1000W+数据) 关键sql: laravel5.1 框架 日活实现方式一: 不使 ...

  6. C语言编程>第六周 ⑥ 输入一串字符,统计大大写字母的个数,并强调统计必须用函数。

    例题:输入一串字符,统计大大写字母的个数,并强调统计必须用函数. 代码如下: #include <stdio.h> #include <string.h>//字符头文件 int ...

  7. mysql工作日_mysql自定义函数计算时间段内的工作日(支持跨年)

    ① 同一年的情况下计算工作日函数 CREATE DEFINER=`root`@`%` FUNCTION `WORKDAYSONEYEAR`(`datefrom` datetime,`dateto` d ...

  8. 日活、周活(周重活)、月活 统计

    效果展示: 以上数据为测试数据 实现思路: 按照查询天数往前推规定天 比如周.月 登录表为按月分表(数据量大约一张表1000W+数据) 关键sql: laravel5.1 框架 日活实现方式一: 不使 ...

  9. 【mysql】获取指定日期是当年第几周,指定日期所在周的开始和结束日期

    描述 最近在刷mysql的题目,遇到指定日期是当年第几周的问题. 解决 0.总结 先总结,具体使用和区别看下文: # 一.返回第几周 select date_format('2023-01-01',' ...

最新文章

  1. Python学习心得(二) 字典Dictionary
  2. 服务器和芯片有什么区别,物联网模块和芯片的区别
  3. 【正一专栏】曼彻斯特德比落幕——曼城独孤求败继续超神
  4. 【Elasticsearch】检查您的 Elasticsearch 分片
  5. php怎么获取栏目,thinkphp获取栏目和文章当前位置的方法
  6. 从数组中删除最后一项
  7. 初用WEB IOU,IE LAB备战启航
  8. vector怎么排序_零基础的人怎么学习Java
  9. 2007上半年网络游戏企业报告总结
  10. 【工业大数据】35页PPT讲解:工业大数据特点、价值及其计算
  11. 谷歌浏览器如何截全屏长图,超级方便实用
  12. 光谱共焦的干涉测量原理及厚度测量模式
  13. QT编写BarChart直方图
  14. 【linux内核分析与应用-陈莉君】内核同步措施
  15. HTML5+CSS3制作透视正方体
  16. 关于C#怎样跨磁盘移动文件夹(比如C盘文件夹复制到D盘)
  17. centos6 安装完epel 解决yum的问题
  18. 部署Vista(9)——配置OOBE实现完全自动化
  19. python数据去重(pandas)
  20. Create React App proxy配置

热门文章

  1. 创意自画像及简单交互
  2. 【JavaScript 基础】-- 数组切割splice和slice
  3. python编程中文名_Python编程实战中遇到的几种需要化名的情境
  4. 详解:Hyper-V虚拟主机数据磁盘扩容
  5. day82_babasport第八天
  6. Nginx 联合创始人已被释放:“这是典型的敲诈,就这么简单”
  7. csdn博客markdown编辑器下修改图片大小及文字颜色
  8. The Data Science of Gaming and Fantasy Sports 游戏与幻想体育的数据科学 Lynda课程中文字幕
  9. 计算机网络——电子邮件客户端程序设计与实现
  10. 什么是Web服务器,如何配置