sql >> Databasteknik >  >> RDS >> Mysql

Hur ställer du in ett standardvärde för en MySQL Datetime-kolumn?

VIKTIG REDIGERING: Det är nu möjligt att uppnå detta med DATETIME-fält sedan MySQL 5.6.5 , ta en titt på det andra inlägget nedan...

Tidigare versioner kan inte göra det med DATETIME...

Men du kan göra det med TIMESTAMP:

mysql> create table test (str varchar(32), ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.00 sec)

mysql> desc test;
+-------+-------------+------+-----+-------------------+-------+
| Field | Type        | Null | Key | Default           | Extra |
+-------+-------------+------+-----+-------------------+-------+
| str   | varchar(32) | YES  |     | NULL              |       | 
| ts    | timestamp   | NO   |     | CURRENT_TIMESTAMP |       | 
+-------+-------------+------+-----+-------------------+-------+
2 rows in set (0.00 sec)

mysql> insert into test (str) values ("demo");
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+------+---------------------+
| str  | ts                  |
+------+---------------------+
| demo | 2008-10-03 22:59:52 | 
+------+---------------------+
1 row in set (0.00 sec)

mysql>

VARNING: OM du definierar en kolumn med CURRENT_TIMESTAMP PÅ som standard, måste du ALLTID ange ett värde för denna kolumn, annars återställs värdet automatiskt till "now()" vid uppdatering. Det betyder att om du inte vill att värdet ska ändras måste din UPDATE-sats innehålla "[ditt kolumnnamn] =[ditt kolumnnamn]" (eller något annat värde) annars blir värdet "now()". Konstigt, men sant. Jag använder 5.5.56-MariaDB



  1. Hur hittar man n:e ranking i MySQL?

  2. Hur du kontrollerar din sessions ANSI_NULLS-inställning i SQL Server

  3. Hur returnerar man resultatuppsättning från lagrad procedur i Oracle?

  4. Hur man konverterar datetime till UTC i MySQL