sql >> Database teknologi >  >> RDS >> Mysql

Hvordan indstiller du en standardværdi for en MySQL Datetime-kolonne?

VIGTIG REDIGER: Det er nu muligt at opnå dette med DATETIME-felter siden MySQL 5.6.5 , tag et kig på andet indlæg nedenfor...

Tidligere versioner kan ikke gøre det med DATETIME...

Men du kan gøre 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>

ADVARSEL: HVIS du definerer en kolonne med CURRENT_TIMESTAMP ON som standard, skal du ALTID angive en værdi for denne kolonne, ellers vil værdien automatisk nulstille sig selv til "nu()" ved opdatering. Det betyder, at hvis du ikke ønsker, at værdien skal ændres, skal din UPDATE-sætning indeholde "[dit kolonnenavn] =[dit kolonnenavn]" (eller en anden værdi), ellers bliver værdien "now()". Underligt, men sandt. Jeg bruger 5.5.56-MariaDB



  1. Brug af Python og MySQL i ETL-processen:SQLAlchemy

  2. Bestil efter COUNT pr. værdi

  3. Indsamlingsmetode:UDVID Procedure i Oracle-databasen

  4. SQL Server:VÆLG kun rækkerne med MAX(DATE)