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

MySQL日時列のデフォルト値をどのように設定しますか?

    重要な編集: MySQL 5.6.5 以降、DATETIMEフィールドでこれを実現できるようになりました。 、その他の投稿 をご覧ください 以下...

    以前のバージョンでは、DATETIMEではそれを実行できません...

    ただし、TIMESTAMPを使用してそれを行うことができます:

    mysql> create table test (str varchar(32), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> desc test;
    +-------+-------------+------+-----+-------------------+-------+
    | Field | Type        | Null | Key | Default           | Extra |
    +-------+-------------+------+-----+-------------------+-------+
    | str   | varchar(32) | YES  |     | NULL              |       | 
    | ts    | timestamp   | NO   |     | CURRENT_TIMESTAMP |       | 
    +-------+-------------+------+-----+-------------------+-------+
    2 rows in set (0.00 sec)
    
    mysql> insert into test (str) values ("demo");
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from test;
    +------+---------------------+
    | str  | ts                  |
    +------+---------------------+
    | demo | 2008-10-03 22:59:52 | 
    +------+---------------------+
    1 row in set (0.00 sec)
    
    mysql>
    

    警告: デフォルトでCURRENT_TIMESTAMPONを使用して列を定義する場合は、常にこの列の値を指定する必要があります。そうしないと、更新時に値が自動的に「now()」にリセットされます。つまり、値を変更したくない場合は、UPDATEステートメントに「[列名] =[列名]」(またはその他の値)が含まれている必要があります。含まれていない場合、値は「now()」になります。奇妙な、しかし本当。 5.5.56-MariaDBを使用しています



    1. OracleのTANH()関数

    2. SQLで個別の値をカウントする方法

    3. SQLServerのタイムスタンプ列を日時形式に変換する方法

    4. SQLServerの特定のテーブルを参照するすべての外部キーを返す