Requête SQL : CREATE TABLE et DEFAULT

Résolu
RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016 - 9 sept. 2006 à 15:03
RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016 - 10 sept. 2006 à 01:06
bonjour,

je cherche depuis un bout de temps, mais en vain,

je voudrais créer une table, avec un champ date de type DATE, mais qui prendrai comme valeur par défaut, la date de l'ajout de la ligne, du genre :

CREATE TABLE membre (
id INT NOT NULL,
nom VARCHAR(30) NOT NULL,
date_inscription DATE DEFAULT "CURRENT_DATE",
PRIMARY KEY pk_membre (id)
);

mais il m'affiche "date_inscription | 0000-00-00" à chaque INSERT d'un nouvel éléments à la place de la 2006-09-09,
si qu'un peut m'aider ??
merci

4 réponses

24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
10 sept. 2006 à 00:28
ça marche aussi, mais je voulais le mettre directement
dans la Table, par défaut, mais bon, c'est surtout que je voulais
savoir pourquoi mon DEFAULT marchait à la compil' mais qu'il m'affiche
0000-00-00 après ...

1. Il n'y a pas de compilation ici, juste une execution de requete :-)
2. Il n'y a pas d'erreur lors de la création de la table pour une valeur par defaut bidon. Ce qui fait que tu pourrais mettre ...

CREATE TABLE membre (
id INT NOT NULL,
nom VARCHAR(30) NOT NULL,
date_inscription DATE DEFAULT "TOTO",
PRIMARY KEY pk_membre (id)
);
... et ça devrait passer. Ca ne signifie pas que le "CURRENT_DATE" soit accepté.
il est dit dans la doc :

Illegal
DATETIME
,
DATE
, or
TIMESTAMP
values are converted to the
“zero” value of the appropriate type
(
'0000-00-00 00:00:00'
,
'0000-00-00'
, or
00000000000000
).

2. il semblerait que ça ne marche pas avec DATE. si tu veux faire comme ça, utilise un champ TIMESTAMP et ça passera

voilà un peu plus d'infos :-)

++
24K
3
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
9 sept. 2006 à 19:25
tu peux toujours utiliser la fonction NOW() quand tu postes ta ligne dans ta table :

INSERT INTO membre VALUES(0,"toto",NOW());

++
24K
0
RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016
9 sept. 2006 à 20:13
ouay,

sinon INSERT INTO membre VALUES(0,"toto",CURRENT_DATE); ou
INSERT INTO membre VALUES(0,"toto",CURDATE());

ça marche aussi, mais je voulais le mettre directement dans la Table, par défaut, mais bon, c'est surtout que je voulais savoir pourquoi mon DEFAULT marchait à la compil' mais qu'il m'affiche 0000-00-00 après ...

peut-être y a-t-il une astuce mais merci quand-même 18karas :o)
0
RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016
10 sept. 2006 à 01:06
merci bcp pour ces infos
0
Rejoignez-nous