web-dev-qa-db-fra.com

La colonne de date MySQL se remplit automatiquement avec la date actuelle

J'ai une table où j'ai une colonne date. MySQL peut-il renseigner automatiquement ce champ chaque fois que j'insère un nouveau registre avec la date du jour? Ou est-ce fait automatiquement par défaut?

P.S .: J'utilise PHPMyAdmin

Vous pouvez spécifier des valeurs par défaut pour les dates de la même manière que toute autre colonne. La syntaxe ressemble à ceci:

mon_date DATE DEFAULT '2014-01-19'

1
Ben Siver

Définissez Default sur dans votre requête mySql

CURRENT_TIMESTAMP
16
Harshada Chavan

vous devez utiliser 

à présent() 

fonction où vous voulez remplir l'heure actuelle.

c'est à dire.:

INSERT INTO  user_rights (`user_id`,`right`,`group_id`,`created_date`) VALUES ( '42',  '160',  '1',  now());
3
murtaza.webdev

Je sais que ce n’est peut-être pas une réponse directe à la question, mais j’estime qu’il s’agit de la solution la plus utilisable.

Je recommande fortement d'utiliser un type de données DATETIME ou TIMESTAMP pour la colonne en question.
Si vous utilisez une version assez récente de MySQL, MySQL fera le travail pour vous .

Détails:
Pour être très clair, à partir de la version 5.6.5, vous pouvez effectuer les opérations suivantes pour les types de données TIMESTAMP & DATETIME:

  1. Définissez une valeur DEFAULT de la date et de l'heure actuelles (à l'aide de NOW () ou de l'un de ses alias tels que CURRENT_TIMESTAMP)
    Cela signifie que chaque fois que vous insérez une nouvelle ligne dans cette table, une colonne TIMESTAMP ou DATETIME avec cette valeur par défaut obtiendra la date et l'heure actuelles.
  2. Définissez une contrainte ON UPDATE qui UPDATE une colonne à la date et l'heure actuelles lorsque, (vous l'avez deviné) la ligne est mise à jour

Voici comment:
Un exemple dans une instruction CREATE TABLE:

CREATE TABLE t1 (
ts1 DATETIME ON UPDATE CURRENT_TIMESTAMP
,ts2 DATETIME DEFAULT NOW()
);

Veuillez noter que DATETIME peut être remplacé par TIMESTAMP pour une fonctionnalité identique.
De plus, je suggère d'utiliser le type de données DATETIME sur TIMESTAMP, car DATETIME a une plage de dates beaucoup plus large qu'il peut prendre en charge. Il est à noter que TIMESTAMP est plus petit pour les quelques cas importants. 
Pour plus de détails, veuillez lire ma réponse ici: https://stackoverflow.com/a/26117532/1748266

2
MER

Vous pouvez faire quelque chose comme ça depuis l'écran SQL 

ALTER TABLE `table_name` CHANGE `created_at` `created_at` TIMESTAMP NOT NULL 
0
MZaragoza