其实可以用存储过程,但想用另一种方法实现:

首先创建一个辅助表,可以设置CREATE TABLE `t4` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`num` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) insert into t4(num) select id from xxx limit 31;(偷懒插入31条数据) alter table t4 drop column num;
mysql> select * from t4;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
+----+
31 rows in set (0.00 sec)
mysql> set @a=-1;
Query OK, 0 rows affected (0.00 sec) mysql> select @a:=@a+1,DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL @a DAY) AS '日期',DAYNAME(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL @a DAY) ) as '星期' from t4 where id<=DAYOFMONTH(last_day(curdate()));
+----------+------------+-----------+
| @a:=@a+1 | 日期 | 星期 |
+----------+------------+-----------+
| 0 | 2015-08-01 | Saturday |
| 1 | 2015-08-02 | Sunday |
| 2 | 2015-08-03 | Monday |
| 3 | 2015-08-04 | Tuesday |
| 4 | 2015-08-05 | Wednesday |
| 5 | 2015-08-06 | Thursday |
| 6 | 2015-08-07 | Friday |
| 7 | 2015-08-08 | Saturday |
| 8 | 2015-08-09 | Sunday |
| 9 | 2015-08-10 | Monday |
| 10 | 2015-08-11 | Tuesday |
| 11 | 2015-08-12 | Wednesday |
| 12 | 2015-08-13 | Thursday |
| 13 | 2015-08-14 | Friday |
| 14 | 2015-08-15 | Saturday |
| 15 | 2015-08-16 | Sunday |
| 16 | 2015-08-17 | Monday |
| 17 | 2015-08-18 | Tuesday |
| 18 | 2015-08-19 | Wednesday |
| 19 | 2015-08-20 | Thursday |
| 20 | 2015-08-21 | Friday |
| 21 | 2015-08-22 | Saturday |
| 22 | 2015-08-23 | Sunday |
| 23 | 2015-08-24 | Monday |
| 24 | 2015-08-25 | Tuesday |
| 25 | 2015-08-26 | Wednesday |
| 26 | 2015-08-27 | Thursday |
| 27 | 2015-08-28 | Friday |
| 28 | 2015-08-29 | Saturday |
| 29 | 2015-08-30 | Sunday |
| 30 | 2015-08-31 | Monday |
+----------+------------+-----------+
31 rows in set (0.00 sec)
mysql>  set @a=-1;
Query OK, 0 rows affected (0.00 sec) mysql> select @a:=@a+1,DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL @a DAY) AS '日期',WEEKDAY(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL @a DAY) )+1 as '星期' from t4 where id<=DAYOFMONTH(last_day(curdate()));
+----------+------------+--------+
| @a:=@a+1 | 日期 | 星期 |
+----------+------------+--------+
| 0 | 2015-08-01 | 6 |
| 1 | 2015-08-02 | 7 |
| 2 | 2015-08-03 | 1 |
| 3 | 2015-08-04 | 2 |
| 4 | 2015-08-05 | 3 |
| 5 | 2015-08-06 | 4 |
| 6 | 2015-08-07 | 5 |
| 7 | 2015-08-08 | 6 |
| 8 | 2015-08-09 | 7 |
| 9 | 2015-08-10 | 1 |
| 10 | 2015-08-11 | 2 |
| 11 | 2015-08-12 | 3 |
| 12 | 2015-08-13 | 4 |
| 13 | 2015-08-14 | 5 |
| 14 | 2015-08-15 | 6 |
| 15 | 2015-08-16 | 7 |
| 16 | 2015-08-17 | 1 |
| 17 | 2015-08-18 | 2 |
| 18 | 2015-08-19 | 3 |
| 19 | 2015-08-20 | 4 |
| 20 | 2015-08-21 | 5 |
| 21 | 2015-08-22 | 6 |
| 22 | 2015-08-23 | 7 |
| 23 | 2015-08-24 | 1 |
| 24 | 2015-08-25 | 2 |
| 25 | 2015-08-26 | 3 |
| 26 | 2015-08-27 | 4 |
| 27 | 2015-08-28 | 5 |
| 28 | 2015-08-29 | 6 |
| 29 | 2015-08-30 | 7 |
| 30 | 2015-08-31 | 1 |
+----------+------------+--------+
31 rows in set (0.00 sec)
mysql> set @a=-1;
Query OK, 0 rows affected (0.00 sec) mysql>
mysql>
mysql> select @a:=@a+1,DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL @a DAY) AS '日期',DAYOFWEEK(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY),INTERVAL @a DAY) ) as '星期' from t4 where id<=DAYOFMONTH(last_day(curdate()));
+----------+------------+--------+
| @a:=@a+1 | 日期 | 星期 |
+----------+------------+--------+
| 0 | 2015-08-01 | 7 |
| 1 | 2015-08-02 | 1 |
| 2 | 2015-08-03 | 2 |
| 3 | 2015-08-04 | 3 |
| 4 | 2015-08-05 | 4 |
| 5 | 2015-08-06 | 5 |
| 6 | 2015-08-07 | 6 |
| 7 | 2015-08-08 | 7 |
| 8 | 2015-08-09 | 1 |
| 9 | 2015-08-10 | 2 |
| 10 | 2015-08-11 | 3 |
| 11 | 2015-08-12 | 4 |
| 12 | 2015-08-13 | 5 |
| 13 | 2015-08-14 | 6 |
| 14 | 2015-08-15 | 7 |
| 15 | 2015-08-16 | 1 |
| 16 | 2015-08-17 | 2 |
| 17 | 2015-08-18 | 3 |
| 18 | 2015-08-19 | 4 |
| 19 | 2015-08-20 | 5 |
| 20 | 2015-08-21 | 6 |
| 21 | 2015-08-22 | 7 |
| 22 | 2015-08-23 | 1 |
| 23 | 2015-08-24 | 2 |
| 24 | 2015-08-25 | 3 |
| 25 | 2015-08-26 | 4 |
| 26 | 2015-08-27 | 5 |
| 27 | 2015-08-28 | 6 |
| 28 | 2015-08-29 | 7 |
| 29 | 2015-08-30 | 1 |
| 30 | 2015-08-31 | 2 |
+----------+------------+--------+
31 rows in set (0.00 sec)

注意:最后一个输出貌似是所有星期都加上1了,感觉不对,其实这是函数的规定来的:

DAYOFWEEK(date)
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。
mysql> select DAYOFWEEK('1998-02-03');

WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
mysql> select WEEKDAY('1997-10-04 22:23:00');
-> 5

这个例子用到的一个技巧是第一个@a:=@a+1来模拟循环记数,伪rownum.

mysql 输出当前月所有日期与对应的星期的更多相关文章

  1. 用DateTime.ToString(string format)输出不同格式的日期

    http://www.cnblogs.com/xvqm00/archive/2009/02/19/1394093.html DateTime.ToString()函数有四个重载.一般用得多的就是不带参 ...

  2. 简单思考 如何用PHP输出本周的周三日期

    简单思考 如何用PHP输出本周的周三日期?比如今天2017-10-31 计算本周周三应该是2017-11-01 自己动脑筋想一想,然后给我留言或者评论

  3. Mysql数据类型《四》日期类型

    日期类型 DATE TIME DATETIME TIMESTAMP YEAR 作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等 YEAR YYYY(1901/2155) DAT ...

  4. js_在原有的日期上添加天数输出添加后的日期

    开始编码工作也有段时间了,想想没有留下点什么,有点遗憾.学到的一些经验,写写,分享一下.也给自己整理一下. 今天分享一下,在原有的日期上添加天数输出添加后的日期.开始做的时候,简单的思路是,直接用ne ...

  5. mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

    mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日 ...

  6. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  7. [转]用DateTime.ToString(string format)输出不同格式的日期

    DateTime.ToString()函数有四个重载.一般用得多的就是不带参数的那个了.殊不知,DateTime.ToString(string format)功能更强大,能输出不同格式的日期.以下把 ...

  8. JS判断日期是否在同一个星期内,和同一个月内

    今天要用到判断日期是否在同一个星期内和是否在同一个月内,在网上找了好一会儿也没找到合适的,然后自己写了一个方法来处理这个问题,思路就不详细介绍了,直接附上代码,自己测试了一下 没有问题,若有问题请在评 ...

  9. mysql 获得当前月1号的日期 和 0点日期方法

    day)) 当月0点时间:2015-12-01 00:00:00 day)) 当月1号时间:2015-12-01 10:45:22 day) 2015-12-01 <!-- 查询上月债权额度 - ...

随机推荐

  1. halcon中variation_model_single实例注释.

    * This example shows how to employ the new extensions of HALCON's variation model operators* to perf ...

  2. paypal之nodejs 框架 Kraken-js 源码分析

    本文是基于 kraken-js 0.6.1 版本的 关于如何使用kraken-js 可以去看看官网的使用文档 点击这里 .kraken-js 是基于express之上的,目的在于让工程师更多的去关注代 ...

  3. [转] The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing

    https://www.smartftp.com/support/kb/the-program-cant-start-because-api-ms-win-crt-runtime-l1-1-0dll- ...

  4. fastreport totalpage 只有设置doublepassreport为true 才正确否则为0

    fastreport totalpage 只有设置doublepassreport为true 才正确否则为0

  5. [CoreOS 转载] CoreOS实践指南(六):分布式数据存储Etcd(下)

    转载:http://www.csdn.net/article/2015-01-28/2823739/2 摘要:Etcd是CoreOS生态系统中处于连接各个节点通信和支撑集群服务协同运作的核心地位的模块 ...

  6. Hadoop 2.7.1 使用minicluster进行单元测试

    目的是要跑通这个单元测试:hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestClose.java 这个Java文件比较简单: /** * Lic ...

  7. MySQL、PostgreSQL、Ingres r3、MaxDB等开源数据库的详细比较

    1.MySQL 5 作为当今最流行的开放源码数据库之一,MySQL数据库为用户提供了一个相对简单的 解决方案,适用于广泛的应用程序部署,能够降低用户的TCO.MySQL是一个多线程.结构化查询语言(S ...

  8. HTML Hyperlink between and within pages

    In HTML, we can use tag <a href=""> to create hyperlinks between and within pages. T ...

  9. 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。

    最近在升级 Visual Studio 2015 Update 3 的过程中,等了很长时间都没一点进展,于是就强行终止了升级程序,但VS也因此出了问题. 后来经过修复,不行,卸载再重装,仍然提示这个错 ...

  10. ARCGIS10.1 GeoDatabase深入理解:客户端连接与退出地理数据库时系统表的初始化

    平台软件:ARCIGS10.1 ,SQL Server2008R2 目的:了解客户端在连接arcgis 空间地理数据库后,地理数据库会做些什么样的初始化工作 准备工作: 1.准备好数据库日志文件查看工 ...