mysql中如何查看某个日期所在的周一是几号?某个日期所在的一周开始时间是几号?
需求描述:
在编写SQL的时候,有这么个需求,就是要查出来某个日期所在的周一是几号,进行了测试,在此进行记录下.
测试过程:
议题:查看某个日期所在的周一是几号
分析:如果某个日期是周一,那么加上整数周之后的日期还是周一,所以,想要查看某个日期所在的周一是几号,就要知道这个日期和某个周一之间相差的整数周就可以了.
1.首先找到某个星期一,以1970.01.05这个日期为例.查看这个日期是周几?
mysql> select date_format('1970-01-05','%W');
+--------------------------------+
| date_format('1970-01-05','%W') |
+--------------------------------+
| Monday |
+--------------------------------+
1 row in set (0.00 sec)
备注:通过查看的结果,可以知道,1970年1月5号是周一,所以使用这个日期就能知道某个日期所在的周一是几号了.
2.查看这个日期和某个日期之间差多少天
mysql> select datediff('2018-06-26','1970-01-05');
+-------------------------------------+
| datediff('2018-06-26','1970-01-05') |
+-------------------------------------+
| 17704 |
+-------------------------------------+
1 row in set (0.00 sec)
备注:两个日期相差17704天.
3.查看两个日期之间相差多少周
mysql> select datediff('2018-06-26','1970-01-05') / 7;
+-----------------------------------------+
| datediff('2018-06-26','1970-01-05') / 7 |
+-----------------------------------------+
| 2529.1429 |
+-----------------------------------------+
1 row in set (0.00 sec)
备注:两个日期相差2529.1429周即整数周是2529周.
3.1计算整数值,使用floor函数计算小于等于这个数的最大整数
mysql> select floor(datediff('2018-06-26','1970-01-05') / 7);
+------------------------------------------------+
| floor(datediff('2018-06-26','1970-01-05') / 7) |
+------------------------------------------------+
| 2529 |
+------------------------------------------------+
1 row in set (0.00 sec)
4.计算2018年6月26日这个日期的周一是几号
mysql> select adddate('1970-01-05',interval floor(datediff('2018-06-26','1970-01-05') / 7)*7 day);
+-------------------------------------------------------------------------------------+
| adddate('1970-01-05',interval floor(datediff('2018-06-26','1970-01-05') / 7)*7 day) |
+-------------------------------------------------------------------------------------+
| 2018-06-25 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
备注:所以,1970年1月5号这个周一加上7*2529天,就是2018年6月26号所在的周一.
5.计算2018年6月25日这个日期的周一是几号的过程
mysql> select datediff('2018-06-25','1970-01-05') / 7;
+-----------------------------------------+
| datediff('2018-06-25','1970-01-05') / 7 |
+-----------------------------------------+
| 2529.0000 |
+-----------------------------------------+
1 row in set (0.00 sec)
mysql> select floor(datediff('2018-06-25','1970-01-05') / 7);
+------------------------------------------------+
| floor(datediff('2018-06-25','1970-01-05') / 7) |
+------------------------------------------------+
| 2529 |
+------------------------------------------------+
1 row in set (0.00 sec)
mysql> select adddate('1970-01-05',interval floor(datediff('2018-06-25','1970-01-05') / 7)*7 day);
+-------------------------------------------------------------------------------------+
| adddate('1970-01-05',interval floor(datediff('2018-06-25','1970-01-05') / 7)*7 day) |
+-------------------------------------------------------------------------------------+
| 2018-06-25 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
备注:两个日期相差正好是2529周,所以呢,就使用1970年1月5号这个日期加上7*2529天就是周一了.
6.计算2018年6月24日这个日期所在的周一是几号
mysql> select datediff('2018-06-24','1970-01-05') / 7;
+-----------------------------------------+
| datediff('2018-06-24','1970-01-05') / 7 |
+-----------------------------------------+
| 2528.8571 |
+-----------------------------------------+
1 row in set (0.00 sec)
mysql> select floor(datediff('2018-06-24','1970-01-05') / 7);
+------------------------------------------------+
| floor(datediff('2018-06-24','1970-01-05') / 7) |
+------------------------------------------------+
| 2528 |
+------------------------------------------------+
1 row in set (0.00 sec)
mysql> select adddate('1970-01-05',interval floor(datediff('2018-06-24','1970-01-05') / 7)*7 day);
+-------------------------------------------------------------------------------------+
| adddate('1970-01-05',interval floor(datediff('2018-06-24','1970-01-05') / 7)*7 day) |
+-------------------------------------------------------------------------------------+
| 2018-06-18 |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
小结:
简单来说,就是某个日期和某个周一之间差多少整数周,相加就是某个日期所在的周一了
文档创建时间:2018年6月26日11:36:48
mysql中如何查看某个日期所在的周一是几号?某个日期所在的一周开始时间是几号?的更多相关文章
- mysql中怎样查看和删除唯一索引
mysql中怎样查看和删除唯一索引. 查看唯一索引: show index from mytable;//mytable 是表名 查询结果例如以下: 查询到唯一索引后,怎样删除唯一索引呢,使用例如以下 ...
- My SQL中show命令--MySQL中帮助查看
My SQL中show命令--MySQL中帮助查看 学习了:http://hahaxiao.techweb.com.cn/archives/477.html 在mysql命令界面内,输入help或者? ...
- JAVA获取当前日期所在的周一到周日的所有日期集合
/** * 获取当前日期所在的周一到周日的所有日期集合 * @return */ public static List<Date> getWeekDateList() { Calendar ...
- MySQL中如何查看“慢查询”,如何分析执行SQL的效率?
一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句. 2,long_query_time ...
- mysql中,查看当前数据库下所有的基表,不包括视图
环境描述: mysql版本:5.5.57-log 操作系统版本:Red Hat Enterprise Linux Server release 6.6 (Santiago) 需求描述: 查看当前使用的 ...
- mysql中explain查看sql语句索引使用情况
explain + sql: mysql> explain select * from user; +----+-------------+-------+------+------------ ...
- Mysql中如何查看慢查询以及查看线程
一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句. 2,long_query_time ...
- mysql中如何查看某个数据库或表占用的磁盘空间
查整个库的状态:select concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size, concat(tru ...
- MySQL中各种数据类型的长度及在开发中如何选择
接触MySQL这个数据库大概快要两年了,不过由于没有特别深入系统的去学习,大多也是停留在一知半解的状态.今天在工作中刚好碰到了表设计的问题,顺便写篇博客,把MySQL中数据类型和字段类型选择这方面给弄 ...
随机推荐
- C语言 · 字符串的展开
算法训练 字符串的展开 时间限制:1.0s 内存限制:256.0MB 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d ...
- Go Revel - server.go 源码分析
之前介绍了 Go Revel - main函数分析 http://www.cnblogs.com/hangxin1940/p/3263775.html 最后会调用 `revel.Run(*port)` ...
- Java编程的逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- maven 从私仓库下载jar包
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
- Java获取mysql数据库元数据
修改后的版本: package com.genratesql.util; import java.sql.Connection; import java.sql.DatabaseMetaData; i ...
- webrtc 源码结构
api WebRTC 接口层.包括 DataChannel, MediaStream, SDP相关的接口.各浏览器都是通过该接口层调用的 WebRTC. call 存放的是 WebRTC “呼叫(Ca ...
- Java零拷贝
1.摘要 零拷贝的“零”是指用户态和内核态间copy数据的次数为零. 传统的数据copy(文件到文件.client到server等)涉及到四次用户态内核态切换.四次copy.四次copy中,两次在用户 ...
- 解决android studio上“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65935”问题
我是在更换应用的一个jar包时发生的这个错误,网上查到说是因为同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65935个(DEX 64K problem),进而导致d ...
- jquery学习心得:一个很好的css和js函数调用的例子
统一目录下的资源结构图: <html><head> <link rel="stylesheet" href="gallery.css&quo ...
- 第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目
第三百七十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapyd部署scrapy项目 scrapyd模块是专门用于部署scrapy项目的,可以部署和管理scrapy项目 下载地址:h ...