MYSQL经典SQL之星期问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL经典SQL之星期问题相关的知识,希望对你有一定的参考价值。

参考技术A 取值为0~6,对应星期一到星期日,每周以星期一为第一天

取值为1~7,对应星期日到星期六,每周以星期日为第一天

取值为Sunday~Saturday,对应星期日到星期六,第一天是星期日;
该函数与参数lc_time_names有关,如果设置此参数值为"zh_CN",则得到对应的中文名称“星期日”~“星期六”

示例:

2017-01-02是星期一,使用这三个函数分别得到的是0,2,Monday

修改lc_time_names参数后,得到中文名称:

该函数用于获取日期是年度中的第几周。该函数比较复杂,使用不同的mode,得到不同的结果。见下表:

例如,mode值为1,则每周的第一天为周一,week()函数的结果为0~53,如果第一个周天数少于4,则记为第0周,如果第一个周天数大于等于4,则记为第1周。
再如,mode值为2,则每周第一天为周日,week()函数的结果为1~53,如果第一个周里包含了周日,则记为第1周,如果第一个周里没有周日,则记为上一年度的最后一周。

实际上,这个参数主要是为了解决跨年的周该如何归属的问题,是算作本年度的第一周,还是上一年度的最后一周,又或者是算作第0周。这需要根据使用场景和习惯来选择。
但不管怎么归属,week函数本身的取值范围有限,所以再跨年的时间区间一般不用此函数(后边举例说明)。

参考:
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_week

假设我们有一张销售表,内容如下:

现在,我们要统计每周的销售额。
首先想到的是用week函数,计算日期对应的周数,然后按照这个周数来进行分组求和:

如果能保证这个日期区间是在一个年度内的,那么用week函数完全没有问题。
很不幸的是,通常日期区间是跨年的,例如我们这个示例中的数据,恰好有跨年的周,2010-12-31日是第52周,2011-01-01变成了2011年度的第0周,而实际上这两天是在同一周。

要解决这个问题,我们不能指望week函数,因为该函数的返回结果总是在0~53循环,我们需要找一个固定时间为第一周,之后的周数累加而非循环。
例如,我们选择2010-01-03为第一周的第一天,之后的任意一天201x-xx-xx距离2010-01-03的天数/7记为周数,得到结果如下:

以上解决方案中,我们选择2010-01-03为起始日期,因为它离我们要统计的时间足够远,同时它是星期日(我们认为周日是一周的第一天)。
如果我们需要把星期一当作第一天,只需要改为2010-01-04即可。

Alibaba之MySQL宝典流出!极致经典,堪称行业天花板

MySQL 是一个关系型数据库,使用 SQL 语言进行增删改查操作,目前属于 Oracle 旗下的产品。

MySQL 数据库开源免费,能够跨平台,支持分布式,性能也不错,可以和 PHP、Java 等 Web 开发语言完美配合,非常适合中小型企业作为 Web 数据库(网站数据库)。

本文内容通俗易懂,实例丰富,既有基础知识,也有进阶技能,能够帮助读者快速入门,是学习 MySQL 的葵花宝典。

MySQL面试专题

吊打面试官的MySQL灵魂100问!

MySQL从入门到精通经典教程

对于每一项具体的服务器操作,都尽量给出了多种的解决方案,读者既可以学会如何使用 MySQL,同时也可以通过这样的安排一窥 MySQL 的灵活性,并且可以通过这种举一反三的方法,对 MySQL 系统有一个非常详尽的了解,也能够加深对培训内容的理解和记忆

MySQL进阶面试突击

  • 数据库理论知识

  • MySQL实际使用

  • MySQL底层实现架构原理

MySQL性能优化最佳实践方案

MySQL王者晋级路

MySQL技术精讲,从青铜到王者,最后结合面试宝典彻底通关

MySQL性能调优与架构设计全解

  • MySQL基础

  • MySQL性能优化

  • MySQL架构设计

MySQL主从复制

MySQL主从方案架构图

MySQL表分区

MySQL查询缓存

MySQL慢查询日志

MySQL事务以及锁原理讲解

MySQL性能优化教程

有MySQL执行优化、MySQL运维优化、MySQL架构优化

本文这些内容,将 MySQL 系统架构、执行流程、索引原理、性能分析、事务和锁原理等做出深入浅出的解读,进而帮助搭建起 MySQL 的底层知识框架,夯实常用技能点。无论是日常开发工作,还是求职面试,都非常值得学习。

由于篇幅限制,就不一一展示了,有需要文中资料完整版的小伙伴们注意啦:一键三连(点赞+收藏+关注)

以上是关于MYSQL经典SQL之星期问题的主要内容,如果未能解决你的问题,请参考以下文章

Alibaba之MySQL宝典流出!极致经典,堪称行业天花板

SQL之经典SQL语句大全

MySQL笔记SQL经典实例(上)

深夜小酌,50道经典SQL题,真香~

深夜小酌,50道经典SQL题,真香~

深夜小酌,50道经典SQL题,真香~