mysql数据库按周统计

mysql数据库按周统计

需求:统计本周的数据,上一周的数据,不管是不是跨年,星期一是第1天。

week函数总共分为8种情况:

  • 以星期一还是星期天做为一周的第1天(一周7天从星期一到星期天)
  • 一年的第1个星期,4天以上在本年还是星期的第1天在本年。
  • 一年开始属于去年的天,返回0还是上一年的星期数。

WEEK(date[,mode])

This function returns the week number for date. The two-argument form of WEEK() enables you to specify whether the week starts on Sunday or Monday and whether the return value should be in the range from 0 to 53 or from 1 to 53. If the mode argument is omitted, the value of the default_week_format system variable is used. See Section 5.1.8, “Server System Variables”.

The following table describes how the mode argument works.

Mode First day of week Range Week 1 is the first week …
0 Sunday 0-53 with a Sunday in this year
1 Monday 0-53 with 4 or more days this year
2 Sunday 1-53 with a Sunday in this year
3 Monday 1-53 with 4 or more days this year
4 Sunday 0-53 with 4 or more days this year
5 Monday 0-53 with a Monday in this year
6 Sunday 1-53 with 4 or more days this year
7 Monday 1-53 with a Monday in this year

For mode values with a meaning of “with 4 or more days this year,” weeks are numbered according to ISO 8601:1988:

  • If the week containing January 1 has 4 or more days in the new year, it is week 1.
  • Otherwise, it is the last week of the previous year, and the next week is week 1.
mysql> SELECT WEEK('2008-02-20');
        -> 7
mysql> SELECT WEEK('2008-02-20',0);
        -> 7
mysql> SELECT WEEK('2008-02-20',1);
        -> 8
mysql> SELECT WEEK('2008-12-31',1);
        -> 53

If a date falls in the last week of the previous year, MySQL returns 0 if you do not use 2, 3, 6, or 7 as the optional mode argument:

mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);
        -> 2000, 0

One might argue that WEEK() should return 52 because the given date actually occurs in the 52nd week of 1999. WEEK() returns 0 instead so that the return value is “the week number in the given year.” This makes use of the WEEK() function reliable when combined with other functions that extract a date part from a date.

If you prefer a result evaluated with respect to the year that contains the first day of the week for the given date, use 0, 2, 5, or 7 as the optional mode argument.

mysql> SELECT WEEK('2000-01-01',2);
        -> 52

Alternatively, use the YEARWEEK() function:

mysql> SELECT YEARWEEK('2000-01-01');
        -> 199952
mysql> SELECT MID(YEARWEEK('2000-01-01'),5,2);
        -> '52'

原文地址:https://www.cnblogs.com/mozq/p/12389478.html

时间: 2024-10-08 06:02:57

mysql数据库按周统计的相关文章

shell 脚本获取MySQL数据库中所有表记录总数

近期遇到一个需求,Mysql数据库中需要统计所有表的记录数据:查了下资料可以调取information_schema数据表中数据获取所有表记录数据,但是查询出来的数据,发现和手动统计的记录数据不一致,information_schema查询出来的数据部分不准确[原因应该是部分表数据没有自动同步].折腾了下,于是还是自己手动写个脚本,分享下也做下次备用.程序结构:#!/bin/bash Author:Jerry tb_name=mysql -u账号 -p密码 -h192.168.x.x -P端口

java语言利用MySQL数据库自带的DATE_SUB()函数查询一周、一个月、半年、一年之内的数据记录

在JSP页面中根据论坛帖子的发帖时间查询帖子记录,前台JSP页面代码如下: <s:form id="postTime" action="findPostByTime" method="post" theme="simple" target="mFrame"> <table class="tab_data" width="70%" > <t

mysql数据库统计QPS脚本

如下脚步是对mysql数据库统计QPS脚本: #!/bin/bash mysqladmin -uroot-p'xxxx' extended-status -i1|awk 'BEGIN{local_switch=0;print"QPS   Commit Rollback   TPS   Threads_con Threads_run\n------------------------------------------------------- "} $2 ~/Queries$/    

mysql 按月按周统计

http://hi.baidu.com/liangjian1024/blog/item/6861541b1416094842a9ad7c.html 表finance有俩个字段如下 date date money double(15,2)     下面需要对表finance的2010年财务数据,按月进行统计 Sql代码 select DATE_FORMAT(date,'%Y-%m') as month,sum(money) as money from finance where DATE_FORM

4、第八周 - 网络编程进阶 - Mysql数据库操作

数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.以下是关于数据库一些术语: 数据库: 数据库是一些关联表的集合.. 数据表: 表是数据的矩阵.在一个数据库中的表看起来像一个简单的电子表格. 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据. 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据. 冗余:存储两份数据,冗余可以使系统速度更快.例如不同表中的相同字段(表

MySQL按周统计 WEEK 实例

MySQL按周统计每周数据总和,用到了WEEK,subdate,date_format,date_sub,date_add函数. WEEK() 查看给定日期周数,语法:WEEK(date, mode); SUBDATE() 函数做日期减法操作,语法:SUBDATE(date,INTERVAL expr unit) 和 SUBDATE(expr,days); DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据,语法:DATE_FORMAT(date,format); DATE_SU

第一周:jmeter连接mysql数据库

在使用jmeter进行性能或接口测试的时候,经常会需要连接到数据库中,那么如何使用jmeter连接数据库呢,下面以mysql数据库为例作一下简单的说明: 第一步:在测试计划中点击"浏览"按钮,添加如图所示的jar包. 第二步:在线程组中添加JDBC Connection Configuration配置元件 第三步:填写数据库的连接信息. 第四步:添加JDBC Request 第五步:在jdbc reques中填写信息,注意其中的variable name要与连接信息中填写的一致,否则就

MapReduce编程实战(2)-词频统计结果存入mysql数据库

摘要 通过实现MapReduce计算结果保存到MySql数据库过程,掌握多种方式保存计算结果的技术,加深了对MapReduce的理解: Api 文档地址:http://hadoop.apache.org/docs/current/api/index.html maven资源库:https://mvnrepository.com/repos/central     ##用于配置pom.xml的时候查询资源 1.master主机安装mysql 参见文章:https://www.cnblogs.com

[MySQL] 按日期进行统计(前一天、本周、某一天)

在mysql数据库中,常常会遇到统计当天的内容.例如,在user表中,日期字段为:log_time统计当天 sql语句为: select * from user where date(log_time) = curdate(); curdate()表示当天日期统计前一天 如果表示前一天的数据,则不能使用curdate()-1,因为当日期为月初时,curdate()-1 日期就不是上一个月的月末日期. 例如:今天是6月1日,理论上curdate()-1为5月31日,但是curdate()-1得到不