Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-il possible de créer une colonne avec une valeur par défaut UNIX_TIMESTAMP dans MySQL ?

La façon dont MySQL implémente le TIMESTAMP type de données, il stocke en fait l'heure de l'époque dans la base de données. Vous pouvez donc simplement utiliser un TIMESTAMP colonne avec une valeur par défaut de CURRENT_TIMESTAMP et appliquez le UNIX_TIMESTAMP() si vous voulez l'afficher comme un entier :

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)

Cependant, si vous voulez vraiment que le type de données de la colonne soit INT , vous pouvez utiliser la suggestion de R. Bemrose et la définir via le déclencheur :

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)