2017年8月22日火曜日

MySQLで日付から「○月第○週」を求める方法

MySQLで日付から「○月第○週」を求める方法のメモ。

-- テスト用テーブル・データ作成
create table test.weektest (date1 date primary key);

insert into test.weektest values('2017/06/01');
insert into test.weektest values('2017/06/02');
insert into test.weektest values('2017/06/03');
insert into test.weektest values('2017/06/04');
insert into test.weektest values('2017/06/05');
insert into test.weektest values('2017/06/06');
insert into test.weektest values('2017/06/07');
insert into test.weektest values('2017/06/08');
insert into test.weektest values('2017/06/09');
insert into test.weektest values('2017/06/10');
insert into test.weektest values('2017/06/11');
insert into test.weektest values('2017/06/12');
insert into test.weektest values('2017/06/13');
insert into test.weektest values('2017/06/14');
insert into test.weektest values('2017/06/15');
insert into test.weektest values('2017/06/16');
insert into test.weektest values('2017/06/17');
insert into test.weektest values('2017/06/18');
insert into test.weektest values('2017/06/19');
insert into test.weektest values('2017/06/20');
insert into test.weektest values('2017/06/21');
insert into test.weektest values('2017/06/22');
insert into test.weektest values('2017/06/23');
insert into test.weektest values('2017/06/24');
insert into test.weektest values('2017/06/25');
insert into test.weektest values('2017/06/26');
insert into test.weektest values('2017/06/27');
insert into test.weektest values('2017/06/28');
insert into test.weektest values('2017/06/29');
insert into test.weektest values('2017/06/30');
insert into test.weektest values('2017/07/01');
insert into test.weektest values('2017/07/02');
insert into test.weektest values('2017/07/03');
insert into test.weektest values('2017/07/04');
insert into test.weektest values('2017/07/05');
insert into test.weektest values('2017/07/06');
insert into test.weektest values('2017/07/07');
insert into test.weektest values('2017/07/08');
insert into test.weektest values('2017/07/09');
insert into test.weektest values('2017/07/10');
insert into test.weektest values('2017/07/11');
insert into test.weektest values('2017/07/12');
insert into test.weektest values('2017/07/13');
insert into test.weektest values('2017/07/14');
insert into test.weektest values('2017/07/15');
insert into test.weektest values('2017/07/16');
insert into test.weektest values('2017/07/17');
insert into test.weektest values('2017/07/18');
insert into test.weektest values('2017/07/19');
insert into test.weektest values('2017/07/20');
insert into test.weektest values('2017/07/21');
insert into test.weektest values('2017/07/22');
insert into test.weektest values('2017/07/23');
insert into test.weektest values('2017/07/24');
insert into test.weektest values('2017/07/25');
insert into test.weektest values('2017/07/26');
insert into test.weektest values('2017/07/27');
insert into test.weektest values('2017/07/28');
insert into test.weektest values('2017/07/29');
insert into test.weektest values('2017/07/30');
insert into test.weektest values('2017/07/31');
insert into test.weektest values('2017/08/01');
insert into test.weektest values('2017/08/02');
insert into test.weektest values('2017/08/03');
insert into test.weektest values('2017/08/04');
insert into test.weektest values('2017/08/05');
insert into test.weektest values('2017/08/06');
insert into test.weektest values('2017/08/07');
insert into test.weektest values('2017/08/08');
insert into test.weektest values('2017/08/09');
insert into test.weektest values('2017/08/10');

SELECT
date1
,CONCAT(MONTH(ADDDATE(date1, weekday(date1) * -1))
  , '月第'
  , FLOOR((DAYOFMONTH(ADDDATE(date1, weekday(date1) * -1))-1)/7)+1, '週') 
AS WEEK
FROM test.weektest
ORDER BY date1;

↓のような結果が得られる。月曜始まりとして、ある日付の週の月曜日がある月の第○週を返す。

date1 WEEK
2017/06/01 5月第5週
2017/06/02 5月第5週
2017/06/03 5月第5週
2017/06/04 5月第5週
2017/06/05 6月第1週
2017/06/06 6月第1週
2017/06/07 6月第1週
2017/06/08 6月第1週
2017/06/09 6月第1週
2017/06/10 6月第1週
2017/06/11 6月第1週
2017/06/12 6月第2週
2017/06/13 6月第2週
2017/06/14 6月第2週
2017/06/15 6月第2週
2017/06/16 6月第2週
2017/06/17 6月第2週
2017/06/18 6月第2週
2017/06/19 6月第3週
2017/06/20 6月第3週
2017/06/21 6月第3週
2017/06/22 6月第3週
2017/06/23 6月第3週
2017/06/24 6月第3週
2017/06/25 6月第3週
2017/06/26 6月第4週
2017/06/27 6月第4週
2017/06/28 6月第4週
2017/06/29 6月第4週
2017/06/30 6月第4週
2017/07/01 6月第4週
2017/07/02 6月第4週
2017/07/03 7月第1週
2017/07/04 7月第1週
2017/07/05 7月第1週
2017/07/06 7月第1週
2017/07/07 7月第1週
2017/07/08 7月第1週
2017/07/09 7月第1週
2017/07/10 7月第2週
2017/07/11 7月第2週
2017/07/12 7月第2週
2017/07/13 7月第2週
2017/07/14 7月第2週
2017/07/15 7月第2週
2017/07/16 7月第2週
2017/07/17 7月第3週
2017/07/18 7月第3週
2017/07/19 7月第3週
2017/07/20 7月第3週
2017/07/21 7月第3週
2017/07/22 7月第3週
2017/07/23 7月第3週
2017/07/24 7月第4週
2017/07/25 7月第4週
2017/07/26 7月第4週
2017/07/27 7月第4週
2017/07/28 7月第4週
2017/07/29 7月第4週
2017/07/30 7月第4週
2017/07/31 7月第5週
2017/08/01 7月第5週
2017/08/02 7月第5週
2017/08/03 7月第5週
2017/08/04 7月第5週
2017/08/05 7月第5週
2017/08/06 7月第5週
2017/08/07 8月第1週
2017/08/08 8月第1週
2017/08/09 8月第1週
2017/08/10 8月第1週



2017年3月16日木曜日

AIが人に代わる未来は来ない

グーグルの研究本部長が予言「AIが人に代わる未来は来ない」

を読んだ。
人間が認識しておかなければならないのは、こういったモノは人間が使えるツールであって、われわれがやってきたことにとって代わる、完全に代替するものではないということです。


常々思ってたことなのでGoogleの研究本部長が言ってくれてスッキリした。

技術者がAIを進化させて、人々がうまく使いこなせるようになる事は意味があるけど、
お任せってわけにはなかなかいかないでしょう。



まあでも100年後どうなってるかは分からないけどね。



2017年3月1日水曜日

最近読んだものメモ

Spring Boot解説第2回 (IDEの構築とHello World)
http://qiita.com/TEBASAKI/items/a30a7daf11cdb51272fb

Spring Boot 使い方メモ
http://qiita.com/opengl-8080/items/05d9490d6f0544e2351a

Spring MVCのコントローラでの戻り値いろいろ
http://qiita.com/tag1216/items/3680b92cf96eb5a170f0

Spring4勉強会 第三回(Validation)
http://qiita.com/yu_eguchi/items/5a1b2ae46ff803b020bf

Thymeleafチートシート
http://qiita.com/NagaokaKenichi/items/c6d1b76090ef5ef39482

Spring BootでSpring SecurityのCSRF対策を使う
http://qiita.com/nenokido2000/items/22a97a26a5858ddb164f

OkHttp (POST送信)
http://square.github.io/okhttp/

CentOS6.7 + Java 1.8 + Tomcat 8 の環境を作るには
http://qiita.com/hirohiro77/items/893be0dea507925f6322

CentOSでサーバー公開するためのセキュリティ設定メモ
http://qiita.com/narumi_/items/179048afb48f64f45c6e

鍵認証の設定をしてパスワードログインを無効にするまで
http://qiita.com/nama/items/54e8f62bfe835bf24a4c

AWSのApache2.4の初期設定とセキュリティ設定
http://qiita.com/shojimotio/items/41a74f314f3e47c018a5

中規模サイトのApacheチューニング
http://qiita.com/kou/items/acb3dcf1dcb428d7a3ec