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

MySQLでUNIX_TIMESTAMPのデフォルトで列を作成することは可能ですか?

    MySQLがTIMESTAMPを実装する方法 データ型は、実際にはエポックタイムをデータベースに保存しています。したがって、TIMESTAMPを使用するだけで済みます。 デフォルトがCURRENT_TIMESTAMPの列 UNIX_TIMESTAMP()を適用します intとして表示したい場合は、それに:

    CREATE TABLE foo(
      created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    );
    
    insert into foo values (current_Date()),(now());
    
    select unix_timestamp(created) from foo;
    +-------------------------+
    | unix_timestamp(created) |
    +-------------------------+
    |              1300248000 |
    |              1300306959 |
    +-------------------------+
    2 rows in set (0.00 sec)
    

    ただし、本当に列のデータ型をINTにしたい場合 、R。Bemroseの提案を使用して、トリガーを介して設定できます:

    CREATE TABLE foo(
      created INT NULL
    );
    
    delimiter $$
    
    create trigger tr_b_ins_foo before insert on foo for each row
    begin
      if (new.created is null)
      then
        set new.created = unix_timestamp();
      end if;
    end $$
    
    delimiter ;
    
    
    insert into foo values (unix_timestamp(current_Date())), (null);
    
    select created from foo;
    +------------+
    | created    |
    +------------+
    | 1300248000 |
    | 1300306995 |
    +------------+
    2 rows in set (0.00 sec)
    


    1. SQLServerは文字列を日時に変換します

    2. MySQLとMariaDBで安全な方法でスキーマ変更を実行する方法

    3. SHOWCOLUMNSの出力をコンマ区切りのリストにグループ化します

    4. DockerコンテナでPHPのmysql拡張機能を有効にする方法は?