Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah mungkin membuat kolom dengan default UNIX_TIMESTAMP di MySQL?

Cara MySQL mengimplementasikan TIMESTAMP tipe data, sebenarnya menyimpan waktu Epoch dalam database. Jadi Anda bisa menggunakan TIMESTAMP kolom dengan default CURRENT_TIMESTAMP dan terapkan UNIX_TIMESTAMP() untuk itu jika Anda ingin menampilkannya sebagai 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)

Namun, jika Anda benar-benar ingin tipe data kolom menjadi INT , Anda dapat menggunakan saran R. Bemrose dan mengaturnya melalui pemicu:

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. Kode Kesalahan:1290. Server MySQL berjalan dengan opsi --secure-file-priv sehingga tidak dapat menjalankan pernyataan ini

  2. Permintaan MySQL untuk mengekstrak kata pertama dari suatu bidang

  3. Apa saja opsi penyimpanan persisten yang bagus dan cepat untuk data kunci->nilai?

  4. Membuat array menggunakan php rekursif dari mysql

  5. seberapa amankah pernyataan yang disiapkan PDO?