Mettre NOW() en valeur par défault dans un champs DATETIME [Résolu]

dvdstory 196 Messages postés dimanche 23 janvier 2005Date d'inscription 10 août 2009 Dernière intervention - 6 déc. 2007 à 00:18 - Dernière réponse : malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention
- 7 déc. 2007 à 08:06
Bonjour les codes-sourciens.

Je galère pour mettre la dateet l'heure actuelle en valeur par défault lors de la création de ma BDD.
Mysql jette ma demande.
Voici la ligne ou jme fait jetter

`datetime` DATETIME NOT NULL DEFAULT NOW() ,

Et la réponse de Mysql:
#1067 - Invalid default value for 'datetime'

Pourtant j'arrive à créer cette collone avec `datetime` DATETIME NOT NULL (sans la valeur par défault) mais parcontre ensuite a chaque fois que je créer une nouvelle ligne, je dois utilisé la fonction Now() pour mettre la date et l'heure de la création de cette ligne. Et c'est pour cette raison que j'aimerais le mettre en valeur par défault mais MySQL n'a pas l'ai de le vouloir.

Merci d'avance.
Afficher la suite 

10 réponses

Répondre au sujet
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 6 déc. 2007 à 01:19
+1
Utile
Salut,

Une valeur par défaut ne peut être qu'une valeur constante. Tu ne peux pas choisir d'y assigner le résultat d'une fonction.
C'est à toi de gérer ça manuellement dans ta requête.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de neigedhiver
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 6 déc. 2007 à 08:19
+1
Utile
Hello,

si si...tu mets ton champ en TIMESTAMP et comme valeur par défaut, tu mets CURRENT_TIMESTAMP.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de malalam
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 7 déc. 2007 à 08:05
+1
Utile
Hello,

juste : on écrit "subtilité", pas "suptilité" :-)
Ensuite, '' différent de null n'est pas une subtilité de SQL, mais de tous les langages que je connais. '' est une chaîne (vide certes, mais une chaîne quand même) Et une chaîne vide, ça a une existance :-) Sinon, c'est un peu comme si tu me disais qu'une bouteille vide n'existe pas. Tu l'as bue, ok, mais tu as toujours la bouteille sur les bras.
De plus, on insère une date en la délimitant par des guillemets simples ou doubles. SQL pense donc qu'avec '', tu cherches à insérer une date. Et comme il ne la comprend pas, bah il met sa valeur par défaut (pour un timestamp), à savoir tus les 0 que tu as eus, formattés comme une date.
Vlà.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de malalam
yoman64 962 Messages postés samedi 19 janvier 2002Date d'inscription 2 août 2010 Dernière intervention - 6 déc. 2007 à 02:43
0
Utile
Salut,

Tu peux aussi utilisé les procédures stockés , mais c'est un peu compliqué pour pas grand chose

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Commenter la réponse de yoman64
dvdstory 196 Messages postés dimanche 23 janvier 2005Date d'inscription 10 août 2009 Dernière intervention - 6 déc. 2007 à 20:40
0
Utile
Je viens de tester la proposition de malasam, mais sa ne marche pas a moins que je me soi trompé, voici ma ligne de code.

`datetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,

et comme résultat j'ai  0000-00-00 00:00:00
Commenter la réponse de dvdstory
yoman64 962 Messages postés samedi 19 janvier 2002Date d'inscription 2 août 2010 Dernière intervention - 6 déc. 2007 à 20:46
0
Utile
Salut,
J'ai testé l'astuce de malalam ça fonctionne , je connaissais pas

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Commenter la réponse de yoman64
dvdstory 196 Messages postés dimanche 23 janvier 2005Date d'inscription 10 août 2009 Dernière intervention - 6 déc. 2007 à 20:50
0
Utile
Passe la ligne de code, pour voir.
Et si tu utilise PhpMyAdmin, lorsque tu insere des données il faut que tu enlève CURRENT_TIMESTAMP dans le champs datetime (dans mon cas) car PhpMyAdmin le préremplit mais lorsque je serais dans mon code php, PhpMyAdmin ne pourrat pas me le préremplir.
Commenter la réponse de dvdstory
yoman64 962 Messages postés samedi 19 janvier 2002Date d'inscription 2 août 2010 Dernière intervention - 6 déc. 2007 à 21:03
0
Utile
INSERT INTO `evenements` (`pid`, `pseudo`, `evenement`) VALUES ('1', 'mike', 'test');

Mon champ qui s'appelle "test" se remplis bien a chaque insertion, évidement les champs qui était déja la sont remplis de 0.

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Commenter la réponse de yoman64
dvdstory 196 Messages postés dimanche 23 janvier 2005Date d'inscription 10 août 2009 Dernière intervention - 6 déc. 2007 à 21:28
0
Utile
C'est de ma faute, je viens de trouver mon erreur.
J'utilise PhpMyAdmin et je me suis fait avoir par une suptilité du langage SQL.
J'ai bien créer mon champs avec le code:
`datetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,

Mais lorsque j'insère des données avec PhpMyAdmin, il me propose de remplir tous les champs de la table (donc aussi `datetime`). Je ne met aucune valeur au champ datetime` et je valide. Mais lorsque PhpMyAdmin execute la requette il met quand meme `datetime` dans sa requette avec `` comme valeur (donc valeur que j'appelerais rien mais qui est différent de NULL).

extrait de la requette envoyer par PhpMyAdmin

INSERTINTO`cracktool`.`cracktool`(
`string`,
`nbchar`,
`datetime`
);

)
VALUES(
'dfdf','6',''

Et comme SQL (Attention c'est une suptilité du langage SQL) considére que la valeur rien `` est différente de la valeur NULL  il n'utilise pas valeur par défault qui est uniquement utilisé lorsque la valeur est null.

J'ai bien expliquer car je pense pas être le premier (ni le dernier) à me faire avoir par cette suptilité et que ce post aidera certain.

Conclusion: La solution de malalam fonctionne, merci à toi.
Commenter la réponse de dvdstory
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 7 déc. 2007 à 08:06
-2
Utile
existence, pas existance...grr..
Commenter la réponse de malalam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.