1046 votes

Comment définir une valeur par défaut pour une colonne MySQL de type datetime ?

Comment définir une valeur par défaut pour une colonne MySQL de type datetime ?

Dans SQL Server, c'est getdate() . Quel est l'équivalent pour MySQL ? J'utilise MySQL 5.x, si c'est un facteur.

7 votes

J'utilise CURRENT_TIMESTAMP dans ma table mysql (pas dans la requête), peut-être que cela peut être utile aussi.

19 votes

Cette fonctionnalité a maintenant été ajoutée à MySQL 5.6.5. J'espère que cela aidera quelqu'un. optimize-this.blogspot.co.uk/2012/04/

0 votes

@GhostInTheSecureShell toute une mission pour l'installer, au moins sur Debian, mais définitivement une fonctionnalité géniale. Je pense qu'un jour toutes ces questions "deux CURRENT_TIMESTAMP" seront résolues !

27voto

Donald Points 131

Vous pouvez utiliser des déclencheurs pour faire ce genre de choses.

CREATE TABLE `MyTable` (
`MyTable_ID`  int UNSIGNED NOT NULL AUTO_INCREMENT ,
`MyData`  varchar(10) NOT NULL ,
`CreationDate`  datetime NULL ,
`UpdateDate`  datetime NULL ,
PRIMARY KEY (`MyTable_ID`)
)
;

CREATE TRIGGER `MyTable_INSERT` BEFORE INSERT ON `MyTable`
FOR EACH ROW BEGIN
        -- Set the creation date
    SET new.CreationDate = now();

        -- Set the udpate date
    Set new.UpdateDate = now();
END;

CREATE TRIGGER `MyTable_UPDATE` BEFORE UPDATE ON `MyTable`
FOR EACH ROW BEGIN
        -- Set the udpate date
    Set new.UpdateDate = now();
END;

27voto

UGS Points 830

Pour tous ceux qui ont perdu courage en essayant de définir une valeur par défaut DATETIME valeur dans MySQL Je sais exactement ce que vous ressentez. Alors voilà :

ALTER TABLE  `table_name` CHANGE `column_name` DATETIME NOT NULL DEFAULT 0

Observez attentivement que Je n'ai pas ajouté de guillemets simples/doubles. autour de la 0

Je suis littéralement en train de sauter après avoir résolu ce problème :D

25voto

Si vous avez déjà créé la table alors vous pouvez utiliser

Pour changer la valeur par défaut en date et heure actuelles

ALTER TABLE <TABLE_NAME> 
CHANGE COLUMN <COLUMN_NAME> <COLUMN_NAME> DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;

Pour changer la valeur par défaut en '2015-05-11 13:01:01'.

ALTER TABLE <TABLE_NAME> 
CHANGE COLUMN <COLUMN_NAME> <COLUMN_NAME> DATETIME NOT NULL DEFAULT '2015-05-11 13:01:01';

15voto

Steven Lloyd Points 74

MySQL 5.6 a corrigé ce problème .

ALTER TABLE mytable CHANGE mydate datetime NOT NULL DEFAULT 'CURRENT_TIMESTAMP'

14voto

Kinjal Dixit Points 2996

C'est en effet une terrible nouvelle. Voici une demande de bogue/de fonctionnalité en attente depuis longtemps à ce sujet . cette discussion parle également des limites du type de données timestamp.

Je me demande sérieusement quel est le problème pour que cette chose soit mise en œuvre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X