mysql查找某年中所有的星期五

思路:
······确定该年有多少天
······建立表temp_num,存储0,1,...,直到该年的天数-1
······利用temp_num查询出该年的每一天
······利用dayname函数设定条件,只查询出周五的日期

假设查询‘1990-10-30’所在年份的所有星期五,首先计算1990有多少天:

mysql> set @num_day = abs(
    ->     datediff(
    ->          date_add('1990-10-30',interval -dayofyear('1990-10-30') day),
    ->          date_add(
    ->                  date_add('1990-10-30',interval -dayofyear('1990-10-30') day),
    ->                  interval 1 year)
    ->          )
    ->          );
Query OK, 0 rows affected (0.00 sec)

mysql> select @num_day;
+----------+
| @num_day |
+----------+
|      365 |
+----------+
1 row in set (0.00 sec)

稍微解释一下逻辑
date_add('1990-10-30',interval -dayofyear('1990-10-30') day)查询到的是1989年的最后一天,用1990-10-30减去当前日期位于全年的第几天即可;
在获取了该年的第一天之后,在此基础上加一年,即可获取1990年的最后一天
date_add('1990-10-30',interval -dayofyear('1990-10-30') day),interval 1 year)
对这两个日期求天数差,即可获取1990年有多少天;

下面开始建表temp_num,建立一个存储过程,像表中插入1,2,...,num_day+1 个记录

mysql> create table temp_num(num int);
Query OK, 0 rows affected (0.03 sec)

mysql> delimiter $$
mysql> create procedure auto_num(in num_day int)
    -> begin
    -> declare i int;
    -> set i=1;
    -> while i<num_day+1 do
    -> insert into temp_num(num) values(i);
    -> set i=i+1;
    -> end while;
    -> end$$
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> call auto_num(@num_day);
Query OK, 1 row affected (1.20 sec)

将1989年的最后一天逐一与temp_num中的数值相加,即可查询1990年的每个日期了。

mysql> select num,
    -> date_add(
    ->          date_add('1990-10-30',interval -dayofyear('1990-10-30') day),
    ->                  interval num day
    ->          ) as 1990_day
    -> from temp_num limit 10;
+------+------------+
| num  | 1990_day   |
+------+------------+
|    1 | 1990-01-01 |
|    2 | 1990-01-02 |
|    3 | 1990-01-03 |
|    4 | 1990-01-04 |
|    5 | 1990-01-05 |
|    6 | 1990-01-06 |
|    7 | 1990-01-07 |
|    8 | 1990-01-08 |
|    9 | 1990-01-09 |
|   10 | 1990-01-10 |
+------+------------+
10 rows in set (0.00 sec)

mysql> select num,
    -> date_add(
    ->          date_add('1990-10-30',interval -dayofyear('1990-10-30') day),
    ->                  interval num day
    ->          ) as 1990_day
    -> from temp_num limit 10 offset 360;
+------+------------+
| num  | 1990_day   |
+------+------------+
|  361 | 1990-12-27 |
|  362 | 1990-12-28 |
|  363 | 1990-12-29 |
|  364 | 1990-12-30 |
|  365 | 1990-12-31 |
+------+------------+
5 rows in set (0.00 sec)

利用dayname函数,加一个限制条件便可查询到为周五的日期了。

mysql> select num,
    -> date_add(
    ->          date_add('1990-10-30',interval -dayofyear('1990-10-30') day),
    ->                  interval num day
    ->          ) as 1990_day
    -> from temp_num 
    -> having dayname(1990_day)='Friday'
    -> limit 10;
+------+------------+
| num  | 1990_day   |
+------+------------+
|    5 | 1990-01-05 |
|   12 | 1990-01-12 |
|   19 | 1990-01-19 |
|   26 | 1990-01-26 |
|   33 | 1990-02-02 |
|   40 | 1990-02-09 |
|   47 | 1990-02-16 |
|   54 | 1990-02-23 |
|   61 | 1990-03-02 |
|   68 | 1990-03-09 |
+------+------------+
10 rows in set (0.00 sec)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,764评论 5 116
  • MySql取得日期(前一天、某一天) 取得当天: SELECT curdate(); mysql> SELECT ...
    laravel阅读 1,635评论 0 4
  • 离开你之后,我却越活越像你。 这个人从高中起一路指引着我,把我带进编导这条路。对我从高中到现在的这段路起到了很大的...
    风歇晴晚阅读 548评论 0 1
  • 2018.4.24 星期二 有雨 欣赏自己:很高兴能来到此次的营销特种兵训练中,我要通过我的努力做一个手心向下...
    文芳司仪导游阅读 212评论 0 0
  • 关于内向还是外向这个问题,我向来对自己很难界定清楚。我只知道自己可动如脱兔,亦可静若处子。我会在朋友面前大大咧咧,...
    多笑笑_阅读 293评论 0 1