MySQLのEXTRACT()関数で使える複合単位とは?一覧と使い方を解説
MySQLのEXTRACT()関数で使用できる複合単位
MySQLのEXTRACT()関数では、日付や時刻から特定の部分を抽出する際に、複合単位(compound units)を使用できます。複合単位を活用することで、「年と月」や「日と時刻」のように、複数の要素を一度に抽出することが可能です。
EXTRACT()関数で使える複合単位の一覧
EXTRACT()関数で利用できる複合単位は以下の11種類です。
- SECOND_MICROSECOND(秒・マイクロ秒)
- MINUTE_MICROSECOND(分・マイクロ秒)
- HOUR_MICROSECOND(時・マイクロ秒)
- DAY_MICROSECOND(日・マイクロ秒)
- MINUTE_SECOND(分・秒)
- HOUR_SECOND(時・秒)
- HOUR_MINUTE(時・分)
- DAY_SECOND(日・秒)
- DAY_MINUTE(日・分)
- DAY_HOUR(日・時)
- YEAR_MONTH(年・月)
複合単位の具体的な使用例
以下は、EXTRACT()関数で複合単位を使用した実際の実行例です。
YEAR_MONTHを使った例
mysql> Select EXTRACT(YEAR_MONTH from '2017-10-20');+---------------------------------------+| EXTRACT(YEAR_MONTH from '2017-10-20') |+---------------------------------------+| 201710 |+---------------------------------------+1 row in set (0.00 sec)このクエリでは、日付から「年」と「月」の値を抽出しています。結果として「201710」が返されます。
DAY_HOURを使った例
mysql> Select EXTRACT(DAY_HOUR from '2017-10-20 05:46:45');+----------------------------------------------+| EXTRACT(DAY_HOUR from '2017-10-20 05:46:45') |+----------------------------------------------+| 2005 |+----------------------------------------------+1 row in set (0.00 sec)このクエリでは、日時から「日」と「時」の値を抽出し、結果として「2005」が返されています。
複合単位使用時の重要な注意点
複合単位を使う際には、押さえておくべき重要なポイントがあります。それは、指定した開始単位から終了単位までの間にあるすべての値が、自動的に埋め込まれて返されるという仕様です。つまり、複合単位は「完全な値のセット」として機能します。
たとえば「DAY_MINUTE」を指定した場合、MySQLは「日」「時」「分」の3つの値を返します。「日」と「分」だけではなく、間にある「時」も必ず含まれる点に注意しましょう。
DAY_MICROSECONDを使った例
次の例では「DAY_MICROSECOND」という複合単位を使用しています。この場合、MySQLは「日」「時」「分」「秒」「マイクロ秒」のすべてを返します。つまり、「日」と「マイクロ秒」の間にある「時」「分」「秒」の値が自動的に補完されるのです。
mysql> Select EXTRACT(DAY_MICROSECOND from '2017-10-22 05:52:45.102356');+---------------------------------------------------------------------------+| EXTRACT(DAY_MICROSECOND from '2017-10-22 05:52:45.102356') |+---------------------------------------------------------------------------+| 22055245102356 |+---------------------------------------------------------------------------+1 row in set (0.00 sec)結果を見ると、「22(日)」+「05(時)」+「52(分)」+「45(秒)」+「102356(マイクロ秒)」が連結された「22055245102356」が返されていることがわかります。
このように、EXTRACT()関数の複合単位の仕組みを理解しておけば、MySQLでの日付・時刻データの処理をより柔軟に行えるようになります。
-
MySQLで複合一意性制約を設定する方法
はい、MySQLでは複数のカラムを組み合わせた一意性(複合一意性)を強制することができます。本記事では、実際にテーブルを作成しながら、その設定方法と動作をわかりやすく解説します。 複合一意性制約とは 複合一意性制約とは、単一のカラムではなく、複数のカラムを組み合わせた値の組み合わせに対して一意性を保証する制約です。例えば、「学生名」と「電話番号」の組み合わせが重複しないようにしたい場合に有効です。各カラム単体では同じ値が重複しても問題ありませんが、組み合わせとしては重複したデータを登録できなくなります。 テーブルの作成 まず、UNIQUE制約を使って複合一意性を設定したテーブルを作成します。
-
MySQLで浮動小数点数を保存するには?DECIMAL型の使い方を実例付きで解説
MySQLで浮動小数点数(float)のような数値を正確に保存したい場合は、DECIMAL() 型を使用するのがおすすめです。FLOATやDOUBLEは近似値として扱われるため誤差が生じる可能性がありますが、DECIMALなら金額などの正確な値をそのまま格納できます。ここでは、DECIMAL(10,2) を使って価格データを保存する例を見ていきましょう。なお、「DECIMAL(10,2)」は「整数部・小数部を合わせて最大10桁、うち小数点以下2桁」という意味になります。1. テーブルを作成するまず、CREATE TABLE文でテーブルを作成します。mysql> create table