5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【MySQL】いろんな年月日取得まとめ

Posted at

見てほしい人

MySQLでいろんな期間のデータを取得したいけど、書き方がわからぬという方。

私自身、難しいことは言わず、ここからここまでの期間のデータがほしいだけなんじゃ!と思いつつ、シンタックスエラーに悩まされたり、うまくいかないことが多かったので、個人的に年月日操作でよく使ったものをまとめてみました。
(紹介するもの以外にもいろいろ書き方はあるみたいなので、気になる方は調べてみてください!)

現在の年月日(時刻)

now();
-- 2020-09-04 15:17:11

現在の年月日

curdate();
-- 2020-09-04

現在の月日

date_format(now(), "%c月%e日");
-- 9月4日

現在の時間

time(now());
-- 15:57:09

今月

month(now());
-- 9

今日

day(now());
-- 4

今年

year(now());
-- 2020

去年

year(now())-1;
-- 2019

現在から20日後の年月日(時刻)

DATE_ADD(now(), INTERVAL 20 DAY);
-- 2020-09-24 16:14:01

現在から3ヶ月後の年月日(時刻)

DATE_ADD(now(), INTERVAL 3 MONTH);
-- 2020-12-04 16:16:56

現在から1年前の年月日(時刻)

DATE_ADD(now(), INTERVAL -1 YEAR);
-- 2019-09-04 16:06:03

INTERVALの後の数値にマイナスをつけると、〇〇前になります。

今年の1月1日〜今年の12月31日まで

between CONCAT(year(now()),'-01-01') and CONCAT(year(now()),'-12-31'); 

2年前の1月1日〜現在まで

between CONCAT(year(now())-2,'-01-01') and now();

CONCAT()を使って、年 と 月日 を結合させています。
もっといい方法があるかもしれませんが…。
where文と合わせて、データの日付指定に使ってみてください。

select * from 商品
where 売れた日 between CONCAT(year(now())-2,'-01-01') and now();
-- 2年前の1月1日から現在までに 売れた 商品 のデータを出す。

#まとめ

参考:MySQL 12.7 日付および時間関数

何かとデータが必要になる時に、日付指定とかと格闘することとなると思います。
少なくとも私は、毎度忘れては調べの繰り返しでした。
少しでも誰かのお役に立てたら幸いです。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?