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

STR_TO_DATE()例– MySQL

    MySQLのSTR_TO_DATE() この関数を使用すると、さまざまな日付部分から日付値を作成できます。

    この関数を使用するときは、さまざまな日付部分の文字列と、日付が提供される形式を指定する2番目の引数を指定します。

    構文

    構文は次のようになります:

    STR_TO_DATE(str,format)
    

    str は日付部分を含む文字列であり、formatはフォーマット文字列です(strの方法を決定します 引数はフォーマットされています。

    例1-基本的な使用法

    実例を示します。

    SELECT STR_TO_DATE('31,12,1999','%d,%m,%Y');
    

    結果:

    +--------------------------------------+
    | STR_TO_DATE('31,12,1999','%d,%m,%Y') |
    +--------------------------------------+
    | 1999-12-31                           |
    +--------------------------------------+
    

    例2–フォーマット文字列の順序

    フォーマット文字列は、日付文字列で提供される値と一致する必要があります。たとえば、次のことはできません。

    SELECT STR_TO_DATE('31,12,1999','%m,%d,%Y');
    

    結果:

    +--------------------------------------+
    | STR_TO_DATE('31,12,1999','%m,%d,%Y') |
    +--------------------------------------+
    | NULL                                 |
    +--------------------------------------+
    

    これが機能しなかった理由は、月の値を31に強制しようとしているためですが、1年に12か月しかないためです。したがって、これは無効な日付値になります。

    したがって、この関数を使用する場合、特に日の値が12以下の場合は注意が必要です。そうしないと、月と日の値が気付かずに入れ替わってしまう可能性があります。

    たとえば、次のようになります。

    SELECT 
        STR_TO_DATE('07,12,1999','%d,%m,%Y'),
        STR_TO_DATE('07,12,1999','%m,%d,%Y');
    

    結果:

    +--------------------------------------+--------------------------------------+
    | STR_TO_DATE('07,12,1999','%d,%m,%Y') | STR_TO_DATE('07,12,1999','%m,%d,%Y') |
    +--------------------------------------+--------------------------------------+
    | 1999-12-07                           | 1999-07-12                           |
    +--------------------------------------+--------------------------------------+
    

    この場合、両方の07が原因で、前の例のようにNULL値を取得することはありません。 および12 1日でも1か月でもかまいません。

    例3–フォーマット文字列の照合

    フォーマット文字列が正しい順序であっても、最初の引数で指定された日付部分のフォーマットと一致する必要があります。

    したがって、たとえば、これを行うことはできません:

    SELECT STR_TO_DATE('31 Dec, 1999','%d,%m,%Y');
    

    結果:

    +----------------------------------------+
    | STR_TO_DATE('31 Dec, 1999','%d,%m,%Y') |
    +----------------------------------------+
    | NULL                                   |
    +----------------------------------------+
    

    この場合、次のようなことを行う必要があります:

    SELECT STR_TO_DATE('31 Dec, 1999','%d %M, %Y');
    

    結果:

    +-----------------------------------------+
    | STR_TO_DATE('31 Dec, 1999','%d %M, %Y') |
    +-----------------------------------------+
    | 1999-12-31                              |
    +-----------------------------------------+
    

    例4– GET_FORMAT()関数の使用

    GET_FORMAT()を渡すこともできます 2番目の引数として機能します。

    これが例です。

    SELECT STR_TO_DATE('12.07.1999', GET_FORMAT(DATE, 'USA'));
    

    結果:

    +----------------------------------------------------+
    | STR_TO_DATE('12.07.1999', GET_FORMAT(DATE, 'USA')) |
    +----------------------------------------------------+
    | 1999-12-07                                         |
    +----------------------------------------------------+
    

    例5–日時の値

    この関数を使用して、時刻または日時の値を返すこともできます。

    日時の値を使用した例を次に示します。

    SELECT STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s');
    

    結果:

    +--------------------------------------------------------+
    | STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s') |
    +--------------------------------------------------------+
    | 1999-12-31 09:30:17                                    |
    +--------------------------------------------------------+
    

    フォーマット文字列指定子

    フォーマット文字列では、次の指定子を使用できます。これらに加えて、フォーマット文字列でリテラル文字列を使用することもできます。

    指定子 説明
    %a 省略された平日の名前(Sun ..Sat
    %b 省略された月の名前(Jan .. Dec
    %c 月、数値(0 .. 12
    %D 英語のサフィックスが付いた月の日(0th1st2nd3rd 、…)
    %d 曜日、数値(00 .. 31
    %e 曜日、数値(0 .. 31
    %f マイクロ秒(000000 .. 999999
    %H 時間(00 .. 23
    %h 時間(01 .. 12
    %I 時間(01 .. 12
    %i 分、数値(00 .. 59
    %j 年の日(001 .. 366
    %k 時間(0 .. 23
    %l 時間(1 .. 12
    %M 月の名前(January ..December
    %m 月、数値(00 .. 12
    %p AM またはPM
    %r 時間、12時間(hh:mm:ss 続いてAM またはPM
    %S 秒(00 .. 59
    %s 秒(00 .. 59
    %T 時間、24時間(hh:mm:ss
    %U 週(00 .. 53 )、ここで日曜日は週の最初の日です。 WEEK() モード0
    %u 週(00 .. 53 )、ここで月曜日は週の最初の日です。 WEEK() モード1
    %V 週(01 .. 53 )、ここで日曜日は週の最初の日です。 WEEK() モード2; %Xで使用
    %v 週(01 .. 53 )、ここで月曜日は週の最初の日です。 WEEK() モード3; %xで使用
    %W 平日の名前(Sunday ..Saturday
    %w 曜日(0 =日曜日..6 =土曜日)
    %X 日曜日が週の最初の日である週の年、数値、4桁。 %Vで使用
    %x 週の年。月曜日は週の最初の日で、数値は4桁です。 %vで使用
    %Y 年、数値、4桁
    %y 年、数値(2桁)
    %% リテラル% キャラクター
    %x x 、任意の「x 」は上記にリストされていません

    1. PostgreSQL 9.2 JDBCドライバーはクライアントのタイムゾーンを使用しますか?

    2. ORA-02287:シーケンス番号はここでは許可されていません

    3. JDBCタイプの方言マッピングなし:1111

    4. 新しいテーブルが作成されているときにのみ実行するトリガーを作成する