MySQLで日付の変換を行う際、`STR_TO_DATE`関数は非常に便利です。しかし、`STR_TO_DATE`を使用する際にフォーマットの指定方法に注意が必要です。特に、日付形式「YYMMDD」の文字列を日付型に変換しようとするときに発生しやすいエラーについて、正しい構文を理解することが重要です。
STR_TO_DATE関数の基本的な使い方
MySQLの`STR_TO_DATE`関数は、文字列を指定したフォーマットに従って日付型に変換する関数です。この関数を使用する際には、文字列とその文字列が持つ日付の形式を正確に指定する必要があります。
基本的な構文は以下の通りです。
SELECT STR_TO_DATE('日付文字列', 'フォーマット');
ここで、`日付文字列`は変換したい文字列、`フォーマット`はその文字列の日付形式を指定します。
YYMMDD形式の日付を変換する場合
質問者が試した「`SELECT STR_TO_DATE(‘140121’, ‘%Y%m%d’);`」というクエリには少し誤解があります。`%Y`は4桁の西暦年を表すため、2桁の年(例えば「14」)を指定する場合には`%y`(2桁の年)を使用する必要があります。
従って、正しい構文は次のようになります。
SELECT STR_TO_DATE('140121', '%y%m%d');
これで、`’140121’`という文字列は「2014年1月21日」の形式に正しく変換されます。
STR_TO_DATEでよく使う日付フォーマット指定子
MySQLの`STR_TO_DATE`関数では、さまざまなフォーマット指定子を使用して日付を解析することができます。ここでは、よく使われるいくつかの指定子を紹介します。
指定子 | 意味 |
---|---|
%Y | 4桁の西暦年(例:2023) |
%y | 2桁の西暦年(例:23) |
%m | 月(01から12) |
%d | 日(01から31) |
%H | 24時間制の時間(00から23) |
%i | 分(00から59) |
%s | 秒(00から59) |
これらの指定子を組み合わせることで、様々な日付形式を変換することができます。
エラーが発生する理由とその対処法
質問者が最初に試した「`SELECT STR_TO_DATE(‘140121’, ‘%Y%m%d’);`」では、`%Y`が4桁の年を期待しているため、2桁の年「14」を正しく解釈できません。そのため、エラーが発生しました。
解決方法としては、`%Y`ではなく`%y`を使用して、2桁の年を適切に処理することです。このようなフォーマット指定子の違いを理解し、適切に指定することが重要です。
まとめ
MySQLで日付の変換を行う場合、`STR_TO_DATE`関数を使うことで、様々なフォーマットの文字列を日付型に変換することができます。特に「YYMMDD」の形式を変換する際には、`%y`を使用することがポイントです。間違ったフォーマット指定を避けるために、常に変換する文字列の形式を正しく認識し、それに合った指定子を選ぶようにしましょう。
コメント