sql >> データベース >  >> RDS >> Mysql

MySQLで文字列から時間を取得する方法

    問題:

    MySQLの文字列値から時間を抽出したい。

    例:

    次のような文字列値があります:

    ‘Wednesday, 10 February 2021, 12:30:20’
    

    時間の部分「12:30:20」のみを抽出したい。

    解決策:

    クエリは次のとおりです:

    SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
    

    ディスカッション:

    プロセスをより明確に説明するために、これを2つの部分で説明します。

    まず、文字列を日付値に変換する必要があります。これを行うには、STR_TO_DATEを使用します 働き。クエリは次のようになります:

    SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);

    STR_TO_DATEの目的 関数は、テキスト文字列を日時形式に変換することです。この関数の構文は次のとおりです。

    STR_TO_DATE(string, format);
    

    この関数の最初の引数は、変換する文字列です。 2番目の引数は、文字列の形式を指定します。この場合、次のパラメータを使用します。

    • %W:日曜日から土曜日までの平日の名前。
    • %d:01から31までの数値としての月の日。
    • %m:01から12までの数値としての月。
    • %Y:4桁の数値(yyyy)としての年。
    • %T:24時間形式の時間(hh:mm:ss)。

    MySQLの公式ドキュメントでより多くのパラメータを見つけることができます。

    このクエリの結果は次のようになります。

    2021-02-10 12:30:20
    

    これで、DATETIMEデータ型の値が得られました。時間のみを抽出するには、DATE_FORMATを追加する必要があります 上記のクエリに機能します。

    DATE_FORMATの一般的な構文 機能は次のとおりです:

    DATE_FORMAT(date, format)
    

    すると、クエリは次のようになります。

    SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
    

    この例では、DATE_FORMATの最初の引数 関数は、STR_TO_DATEの結果の日付です 働き。 2番目の引数は形式であり、STR_TO_DATEと同じように機能します。 働き。ここでは時間が必要なだけなので、「%T」を指定します 「2番目の引数として。

    %文字は、フォーマット指定文字の前に必須です。すべての句読点を含め、まったく同じ順序で形式を指定する必要があります。

    以下に表示されるクエリ結果は、期待される結果です。

    12:30:20

    これら2つの関数を組み合わせて使用​​することにより、テキスト文字列から日付と時刻の可能なすべての組み合わせを抽出できます。


    1. アクセスデータベースのSQLServerへの移行

    2. SQLiteで日付順に並べ替える方法

    3. @@ERRORおよび/またはTRY-CATCH

    4. EBS 12.2.5以降:ログインページボタンのずれ