宣言
STR_TO_DATE(str, format)
説明
format を使用して、str を DATETIME 値、DATE 値、または TIME 値に変換します。戻り値のタイプは、format が日付時刻のどの部分を含むかによって異なります。
strまたはformatがNULLの場合、この関数はNULLを返します。strが有効な日付形式でない場合、戻り値はsql_modeの設定によって異なります:sql_modeにNO_ZERO_IN_DATEが含まれている場合:NULLを返します。sql_modeにNO_ZERO_IN_DATEが含まれていない場合:strがINT型であり、かつstr< 0 の場合、0000-00-00 00:00:00を返し、Warningを表示します。obclient> SELECT STR_TO_DATE(-100,'%Y-%b-%D %r'); +---------------------------------+ | STR_TO_DATE(-100,'%Y-%b-%D %r') | +---------------------------------+ | 0000-00-00 00:00:00 | +---------------------------------+ 1 row in set, 1 warningstrがINT型であり、かつ 0 ≤str≤ 69 の場合、1999-11-30 00:00:00にstrの年を加算した値を返します。obclient> SELECT STR_TO_DATE(0,'%Y-%b-%D %r'); +------------------------------+ | STR_TO_DATE(0,'%Y-%b-%D %r') | +------------------------------+ | 1999-11-30 00:00:00 | +------------------------------+ 1 row in setstrがINT型であり、かつ 69 <str≤ 99 の場合、1969-11-30 00:00:00にstr- 70 の年を加算した値を返します。obclient> SELECT STR_TO_DATE(88,'%Y-%b-%D %r'); +-------------------------------+ | STR_TO_DATE(88,'%Y-%b-%D %r') | +-------------------------------+ | 1987-11-30 00:00:00 | +-------------------------------+ 1 row in setstrがINT型であり、かつ 100 <str≤ 9999 の場合、0099-11-30 00:00:00にstr- 100 の年を加算した値を返します。obclient> SELECT STR_TO_DATE(2088,'%Y-%b-%D %r'); +---------------------------------+ | STR_TO_DATE(2088,'%Y-%b-%D %r') | +---------------------------------+ | 2087-11-30 00:00:00 | +---------------------------------+ 1 row in setstrがINT型であり、かつstr> 10000 の場合、NULLを返し、Warningを表示します。obclient> SELECT STR_TO_DATE(10001,'%Y-%b-%D %r'); +----------------------------------+ | STR_TO_DATE(10001,'%Y-%b-%D %r') | +----------------------------------+ | NULL | +----------------------------------+ 1 row in set, 1 warningstrが文字列の場合、文字列を可能な限り日付時刻に変換し、1999-11-30 00:00:00にstrを加算した値を日付時刻型として返します。日付時刻に変換できない場合は、NULLを返します。obclient> SELECT STR_TO_DATE('a2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r'); +------------------------------------------------------+ | STR_TO_DATE('a2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r') | +------------------------------------------------------+ | NULL | +------------------------------------------------------+ 1 row in set, 1 warning obclient> SELECT STR_TO_DATE('a2014-Jan-1st 5:5:5 pm', 'a%Y-%b-%D %r'); +-------------------------------------------------------+ | STR_TO_DATE('a2014-Jan-1st 5:5:5 pm', 'a%Y-%b-%D %r') | +-------------------------------------------------------+ | 2014-01-01 05:05:05 | +-------------------------------------------------------+ 1 row in setstrがその他の型の場合、NULLを返し、Warningを表示します。obclient> SELECT STR_TO_DATE(1.6,'%Y-%b-%D %r'); +--------------------------------+ | STR_TO_DATE(1.6,'%Y-%b-%D %r') | +--------------------------------+ | NULL | +--------------------------------+ 1 row in set, 1 warning obclient> SELECT STR_TO_DATE(pi(),'%Y-%b-%D %r'); +---------------------------------+ | STR_TO_DATE(pi(),'%Y-%b-%D %r') | +---------------------------------+ | NULL | +---------------------------------+ 1 row in set, 1 warning
format がサポートする形式については、DATE_FORMATを参照してください。
例
obclient> SELECT STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r');
+-----------------------------------------------------+
| STR_TO_DATE('2014-Jan-1st 5:5:5 pm', '%Y-%b-%D %r') |
+-----------------------------------------------------+
| 2014-01-01 05:05:05 |
+-----------------------------------------------------+
1 row in set