MySQLのSTR_TO_DATE()関数とは?文字列を日付値に変換する使い方を解説
MySQLのSTR_TO_DATE()関数とは
STR_TO_DATE()関数は、文字列の値を指定した書式に従って日付・日時(DATETIME)値に変換するためのMySQL組み込み関数です。変換対象となる文字列と、その文字列がどのような形式で表現されているかを示す書式文字列の、2つの引数を渡す必要があります。
この関数を使うことで、「20172810」のように一見すると日付に見えない文字列でも、正しい順序で書式を指定すれば「2017-10-28」という有効な日付値として扱えるようになります。
基本構文
STR_TO_DATE(string, format)
- string: 日付・日時値に変換したい元の文字列
- format: 文字列の並び順を示す書式指定子(例:'%Y%d%m')
使用例
以下の例では、「20172810」という文字列を「%Y%d%m」(4桁の年・日・月の順)という書式で解釈し、有効な日付値に変換しています。
mysql> Select STR_TO_DATE('20172810', '%Y%d%m');
+-----------------------------------+
| STR_TO_DATE('20172810', '%Y%d%m') |
+-----------------------------------+
| 2017-10-28 |
+-----------------------------------+
1 row in set (0.00 sec)結果として「2017-10-28」が返され、文字列が正しく日付値へ変換されたことが確認できます。
主な書式指定子の一覧
format引数には、以下のような書式指定子を組み合わせて使用します。
| 指定子 | 意味 |
|---|---|
| %Y | 4桁の年(例:2017) |
| %y | 2桁の年(例:17) |
| %m | 月(01〜12) |
| %d | 日(01〜31) |
| %H | 時(00〜23) |
| %i | 分(00〜59) |
| %s | 秒(00〜59) |
注意点
指定した書式と文字列の内容が一致しない場合、STR_TO_DATE()関数はNULLを返し、警告(Warning)が出力されます。また、存在しない日付(例:2月30日など)を指定した場合も同様にNULLが返されるため、データをインポートする際などは事前に書式を確認しておくことをおすすめします。
-
MySQLのINTERVAL()関数をテーブルの列に適用する方法
INTERVAL()関数とテーブル列の組み合わせMySQLのINTERVAL()関数は、テーブルの列に対しても使用できます。その場合、関数の第1引数に列名を指定します。すると、その列に格納されているすべての値が、第2引数以降で指定した値と比較され、比較結果に基づいて結果セットが返されます。サンプルデータの確認ここでは、以下のような「employee」テーブルのデータを使用して、実際の動作を確認してみましょう。mysql> Select * from employee568; +----+--------+--------+ | ID | Name | Salary | +----+-
-
データベースクエリでMySQLストアド関数を活用する方法を具体例で解説
MySQLでは、独自に作成したストアド関数(ユーザー定義関数)をSELECT文などのデータベースクエリの中で直接呼び出すことができます。これにより、複雑な計算処理をSQL文の中で簡潔に実行できるようになります。ここでは、利益(Profit)を計算するストアド関数を作成し、その関数をテーブル「item_list」のデータに対してクエリ経由で適用する例を見ていきましょう。ストアド関数「profit」の作成まず、原価(Cost)と販売価格(Price)を受け取り、両者の差額である利益を返す関数「profit」を作成します。mysql> CREATE FUNCTION profit(Cost D