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

MySQLの日付形式–知っておくべきこと

    MySQLは、共同創設者の娘である「My」とSQL-StructuredQueryLanguageから派生しています。これは、オープンソースタイプのリレーショナルデータベース管理システムです。このリレーショナルデータベースシステムは、データを関連性のあるテーブルに整理するのに役立ち、それによってさまざまなデータセットの構造的な関係を可能にします。

    MySQL日付は、数値データ型、文字列データ型、ブールデータ型、日付と時刻、空間データ型などの他のデータ型と一緒にデータ値を管理できる時間データ型の1つです。

    DATE_FORMAT()関数は、指定されたフォーマット値を使用して日付をフォーマットするためにMySQLで使用されます。たとえば、日付が指定されている場合、関数は指定されたパラメーターに関して日付をフォーマットします。

    MySQLの日付形式の構文

    DATE_FORMAT(date, format)

    上記の構文関数は、以下に示すように2つのパラメーターを受け入れます。

    • date –フォーマットする日付を指定します
    • format –日付のフォーマットに使用されるフォーマットを定義します

    以下は、日付関数を扱うときに慣れておく必要のある形式のリストです。

    • %a –この形式は平日の名前を表示します。日曜日から土曜日までに制限されています。
    • %b –このフォーマット記号は月の名前を示します。 1月から12月まで制限されています。
    • %c –このフォーマット記号は、数値の月名を示します。 0から12までに制限されています
    • %D –この形式の記号は、その月の日の数値の後に、1番目や2番目などの接尾辞が続くことを示します。
    • %e –このフォーマット記号は、その月の日の数値を示します。 0から31までに制限されています
    • %f –このフォーマット記号はマイクロ秒を示します。 000000から999999まで制限されています。
    • %H –このフォーマット記号は時間を示します。 00から23までに制限されています。
    • %i –このフォーマット記号は分を示します。 00から59までに制限されています。
    • %j –このフォーマット記号は、年の日を示します。 001から366に制限されています。
    • %M –このフォーマット記号は月の名前を示します。 1月から12月までに制限されています
    • %p –この形式の記号はPMまたはAMを示します
    • %S –このフォーマット記号は秒を示します。 00から59までに制限されています
    • %U –この形式の記号は、日曜日が最初の日である平日を示します。 00から53までに制限されています。
    • %W –この形式の記号は、日曜日から土曜日までの平日を示します
    • %Y –この形式の記号は、年の数値を4桁の数字として示します

    上記の形式は、形式化された日付を返します。

    例1:

    現在の日付から年を抽出または表示するには、次のコマンドラインを実行します。

    SELECT DATE_FORMAT("2021-09-25", "%Y");
    出力:
    例2:

    以下に示すように、特定の日付から月の名前を抽出します。

    2021-09-25

    SELECT DATE_FORMAT("2021-09-25", "%M");
    出力:
    例3:

    以下に示す日付から時間と分を抽出します:

    2021-09-25

    SELECT DATE_FORMAT("2021-09-25 10:20:23", "%H %i");
    出力:
    例4:

    以下に指定された日付から月の日を数値で抽出します。

    2021-09-25

    SELECT DATE_FORMAT("2021-09-25", "%D");
    出力:
    例5:

    ここに記載されている日付から、それぞれ月、日、年を抽出します。

    2021-09-25

    SELECT DATE_FORMAT("2021-09-25", "%M %d %Y");
    出力:

    MySQLの日付はこの形式を使用します。 yyyy-mm-dd データ値を保存します。この形式は通常、変更する権限がなくても修正されます。 MySQLのストレージ要件の場合、単一の日付値を格納するには、約3バイトを使用し、日付値の範囲は1000-01-01から9999-12-31です。したがって、これらのパラメータから日付範囲を格納する必要があるユーザーは、整数を介してのみ可能です。ただし、このプロセスは非常に負担が大きく、3つの列を作成する必要があります。1つは年用、もう1つは月用、最後の列は1日用です。

    日付形式を変更したい場合は、ほとんどの場合、これを試すことはお勧めしません。 「厳密モード」を無効にすると、無効な日付を「ゼロの日付値」に変換するのに役立ちます。この場合の無効な日付は、標準のMySQL日付形式(2020-01-24など)に従いません。これにより、MySQLの新しく作成された日付関数を再現する「保存された関数」を開発する必要も生じます。

    2桁の年のMySQL日付値

    MySQLは、次の条件下で2桁の年の値のみを受け入れます。

    1. 00〜69の年の値は2000〜2069に変換されます
    2. 70〜79年の値は1970〜1999年に変換されます

    ただし、あいまいなため、2桁の日付値を使用しないことをお勧めします。
    ここに例を示します。テーブルは「people」という名前で作成され、「datatypes」列があります:

    CREATE TABLE IF NOT EXISTS people ( 
    JOB_ID integer NOT NULL UNIQUE PRIMARY KEY, 
    JOB_TITLE varchar(35) NOT NULL DEFAULT ' ', 
    MIN_SALARY decimal(6,0) DEFAULT 8000, 
    MAX_SALARY decimal(6,0) DEFAULT NULL
    )ENGINE=InnoDB;

    次の関数は、「人」テーブルに「行を挿入」します。

    INSERT INTO people(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)
    VALUES('5', 'Foss', '2000', '2000');

    次に、「人」テーブルから「データをクエリ」します

    SELECT * FROM people;

    上記のコマンドを実行すると、2桁の年形式オプションを使用して、「人」テーブルにデータを挿入できるようになります。

    INSERT INTO people(JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY,BIRTH)
    VALUES('6', 'FOSSLINUX', '200', '2000', '01-09-01');

    「01」は、年として最初の行で使用されており、(範囲00〜69)の間にあります。次に、MySQLはそれを2001に変換しますが、2行目では、「84」の使用は範囲(70〜99)になり、MySQLはそれを1984に変換します。

    MySQL日付関数

    MySQLは多くの場合、ユーザーがデータをより効果的かつ迅速に操作するのに役立ついくつかの日付関数を提供および使用します。
    たとえば、「NOW()」関数を使用すると、現在の日付と時刻を取得するのに役立ちます:

    SELECT NOW( );

    「DATETIME」の日付部分のみを取得するには、「DATE()」関数のみを使用します。

    SELECT DATE(NOW( ) );

    現在のシステム日付を取得するには、CURDATE()を使用します:

    SELECT CURDATE();

    「DATE_FORMAT」関数を使用して、日付値をこの形式にフォーマットできます。 mm / dd/yyyy。 %m /%d /%Yの日付形式パターンを使用します

    SELECT DATE_FORMAT('2021-09-25 22:23:00', '%W %D %M %Y');

    2つの日付値の間の日数を計算する場合は、「DATEDIFF」関数を使用します。

    mysql> SELECT DATEDIFF('2020-09-25', '2021-09-25') days;

    「DATE_ADD」関数を使用すると、数年、数か月、数週間、または数日を追加するのに役立ちます。

    SELECT DATE_ADD('2021-09-25', INTERVAL 31 DAY);

    「DATE_SUB」関数を使用して、日付間隔を減算することもできます。

    SELECT DATE_SUB("2021-09-25", INTERVAL 10 DAY);

    日付、月、四半期、および年に関して対応する関数を使用すると、以下に示すように、日付値の正確な日、月などを取得するのに役立ちます。

    SELECT DAY(‘2000-12-31’) day,
    MONTH( ‘2000-12-31’) month
    QUARTER(‘2000-12-31’) quarter,
    YEAR(‘2000-12-31’) year

    Day ǀ month ǀ quarter ǀ year ǀ
    31 ǀ 12 ǀ 4 ǀ 2000ǀ

    関連する機能の週次情報には、次の方法でアクセスできます。

    SELECT
    WEEKDAY(‘2000-12-31’) weekday,
    WEEK( ‘2000-12-31’) week,
    WEEKOFTHEYEAR(‘2000-12-31’) weekofyear;

    weekday ǀ week ǀ weekofyear ǀ
    6 ǀ 53 ǀ 52 ǀ

    week関数は、常にゼロベースのインデックスを持つ週番号を返します。これを防ぐには、2番目の引数を渡すか、「0」を渡す必要があります。 「1」を渡すと、週番号「1-indexed」が返されます。

    WEEKDAY(‘2000-12-31’) weekday,
    WEEK( ‘2000-12-31’, 1) week,
    WEEKOFTHEYEAR(‘2000-12-31’) weekofyear;

    weekday ǀ week ǀ weekofyear ǀ
    6 ǀ 52 ǀ 52 ǀ

    結論

    これは、主題のMySQL日付形式をカバーする短い記事のチュートリアルです。 MySQLの日付形式に精通したいすべての側面がカバーされていることを願っています。記事が役に立った場合は、コメントセクションで高く評価することを忘れないでください。


    1. Oracle10gでテーブル列の名前を変更する方法

    2. OracleFormsでのレコードグループによるツリーアイテムの入力

    3. postgresql.conf、パラメーターを一度に減らす

    4. SQLServerの「datetimeoffset」ストレージサイズを理解する