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)