mysql 输出当前月所有日期与对应的星期
生活随笔
收集整理的這篇文章主要介紹了
mysql 输出当前月所有日期与对应的星期
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
其實可以用存儲過程,但想用另一種方法實現:
首先創建一個輔助表,可以設置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 输出当前月所有日期与对应的星期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IoC(Inversion of Con
- 下一篇: mysql C语言API接口及实例