Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy można utworzyć kolumnę z domyślną wartością UNIX_TIMESTAMP w MySQL?

Sposób, w jaki MySQL implementuje TIMESTAMP typ danych, w rzeczywistości przechowuje czas epoki w bazie danych. Możesz więc po prostu użyć TIMESTAMP kolumna z wartością domyślną CURRENT_TIMESTAMP i zastosuj UNIX_TIMESTAMP() do niego, jeśli chcesz wyświetlić go jako 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)

Jeśli jednak naprawdę chcesz, aby typ danych kolumny to INT , możesz skorzystać z sugestii R. Bemrose i ustawić ją za pomocą wyzwalacza:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyniki MySQL jako lista oddzielona przecinkami

  2. Czy EXISTS jest bardziej wydajne niż COUNT(*)>0?

  3. MySQL — Pobieranie najniższej wartości

  4. Tworzenie typu zmiennej ENUM w MySQL

  5. Bardzo długi koniec zapytania w losowych momentach