MySQLの日付型の変換とかフォーマットとかする方法
どのデータベースも日付型だけは面倒なので、MySQLの日付型の変換方法とかを纏めてみました。
文字列型を日付型にする
str_to_dateを使います。
select str_to_date('2019/02/21', '%Y/%m/%d')
これで日付型になりますので、JavaならLocalDateなどで扱えます。
%YのYも大文字小文字で意味合いが違うので注意です。
ざっくり纏めました。
フォーマット | 意味 |
---|---|
%d | 01〜31 |
%e | 0〜31 |
%m | 00~12 |
%Y | 2019 |
%y | 19 |
このフォーマットの大文字小文字を間違えるとnullになってしまうので注意が必要です。
日付の計算
だいたいSQLで日付の計算ができるのですが、MySQLでも日付計算が可能です。
MONTH,YEAR,DAYなどを使います。
select now() - interval 2 YEAR
システム日付から2年引いています。
select now() + interval 5 MONTH
システム日付から5ヶ月足しています。
select '2019/01/31' + interval 1 month
日付から1か月足していますが、2019/02/28となります。
+や-のかわりにDATE_ADDやDATE_SUB関数が使えます。
select DATE_ADD('2019/01/31',interval 1 month) 2019-02-28 select DATE_SUB('2019/01/31',interval 1 month) 2018-12-31
フォーマットする
日付型をフォーマットするにはDateFormatを使用します。
第一引数は日付型です。第二引数がフォーマットです。
select date_format('2019/02/21', '%Y/%m/%d') 2019/02/21 select date_format('2019/02/21', '%Y-%m-%d') 2019-02-21 select date_format('2019/02/21', '%Y-%m') 2019-02
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント