La façon dont MySQL implémente le TIMESTAMP
il s'agit en fait de stocker l'heure d'origine dans la base de données. Vous pourriez donc utiliser un TIMESTAMP
avec une valeur par défaut de CURRENT_TIMESTAMP
et appliquer le UNIX_TIMESTAMP()
si vous voulez l'afficher comme un 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)
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 le régler via un 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)