これは DATE_FORMAT()
関数の反転です。ストリング str
と フォーマット ストリング format
を受取ります。STR_TO_DATE()
は、フォーマット ストリングが日付と時間の両方の部分を含む場合は DATETIME
値を戻し、ストリングが日付または時間の部分の一方のみを含む場合は DATE
もしくは TIME
値を戻します。
str
に含まれる日付、時刻、または日付時刻値は、format
で示されるフォーマットで提供してください。format
で使用できる指定子については、DATE_FORMAT()
関数の説明を参照してください。str
が不当な日付、時刻、または日付時刻値を含む場合は、STR_TO_DATE()
は NULL
を戻します。また、不当な値は警告を生成します。
日付値の部分を確認する範囲は、項10.3.1. 「DATETIME
、DATE
、そして 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'