La forma en que MySQL implementa el TIMESTAMP
tipo de datos, en realidad está almacenando el tiempo de época en la base de datos. Así que podrías usar un TIMESTAMP
columna con un valor predeterminado de CURRENT_TIMESTAMP
y aplique el UNIX_TIMESTAMP()
a él si desea mostrarlo como 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)
Sin embargo, si realmente desea que el tipo de datos de la columna sea INT
, puede usar la sugerencia de R. Bemrose y configurarla a través del disparador:
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)