STR_TO_DATE(str,format)

STR_TO_DATE(str,format)

これは DATE_FORMAT() 関数の反転です。ストリング str と フォーマット ストリング format を受取ります。STR_TO_DATE() は、フォーマット ストリングが日付と時間の両方の部分を含む場合は DATETIME 値を戻し、ストリングが日付または時間の部分の一方のみを含む場合は DATE もしくは TIME 値を戻します。

str に含まれる日付、時刻、または日付時刻値は、format で示されるフォーマットで提供してください。format で使用できる指定子については、DATE_FORMAT() 関数の説明を参照してください。str が不当な日付、時刻、または日付時刻値を含む場合は、STR_TO_DATE()NULL を戻します。また、不当な値は警告を生成します。

日付値の部分を確認する範囲は、項10.3.1. 「DATETIMEDATE、そして TIMESTAMP タイプ」 で説明されている通りです。つまり、例えば、「zero」 日付、または部分の値が 0 の日付は、SQL モードが特にそれらを禁止する設定になっていない限り、使用が許可されます。

mysql> SELECT STR_TO_DATE('00/00/0000', '%m/%d/%Y');
        -> '0000-00-00'
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
        -> '2004-04-31'

注記 :年と週のコンビネーションは、週が月の境界を越えた場合、年と月を一意的に識別できないため、フォーマット "%X%V" を使用して、年 - 週ストリングを日付に変換することはできません。年 - 週を日付に変換するには、曜日も同じく指定するべきです :

mysql> SELECT STR_TO_DATE('200442 Monday', '%X%V %W');
        -> '2004-10-18'