OVH Cloud OVH Cloud

Sql Server + Datetime

3 réponses
Avatar
Fix
Bonjour,

j'ai un problème concernant le type datetime dans une base de donnée de type
Sql server.

Dans mon code je crée un objet DateTime dt = new DateTime(Annee,Mois,Jour);
Au niveau de ma Requete : string Requete = INSERT INTO
Table(Nom,Mail,Adresse,DateReponse)
Values('"+nom+"','"+mail+"','"+adresse+"','"+dt+"');

dt est bien de type jj/mm/aaaa, lorsque je passe la ligne avec la requete dt
prends comme valeur jj/mm/aaaa 0:00:00

Je me demandais ou etait le prob ?

Y a t'il une méthode avec DateTime ou alors que dois je mettre dans ma BD ?

(DateReponse est de type DateTime de taille 8 dans ma table, pas moyen de
modifier la taille avec ce type, mais de toute facon je ne veux pas les
0:00:00)

Merci d'avance pour toutes aides apportées.

Mathieu

3 réponses

Avatar
Fred
Dans son message 42610c47$0$30160$
Fix nous dit :

Bonjour,



Bonjour,

j'ai un problème concernant le type datetime dans une base de donnée
de type Sql server.

Dans mon code je crée un objet DateTime dt = new
DateTime(Annee,Mois,Jour); Au niveau de ma Requete : string Requete > INSERT INTO Table(Nom,Mail,Adresse,DateReponse)
Values('"+nom+"','"+mail+"','"+adresse+"','"+dt+"');

dt est bien de type jj/mm/aaaa, lorsque je passe la ligne avec la
requete dt prends comme valeur jj/mm/aaaa 0:00:00

Je me demandais ou etait le prob ?

Y a t'il une méthode avec DateTime ou alors que dois je mettre dans
ma BD ?
(DateReponse est de type DateTime de taille 8 dans ma table, pas
moyen de modifier la taille avec ce type, mais de toute facon je ne
veux pas les 0:00:00)



C'est une mauvaise façon de procéder. Là tu rencontres un problème avec les
dates. Quand ton adresse ou bien ton nom contiendront des apostrophes, tu en
auras d'autres.
Utilise les paramètres pour éviter ces soucis.
Par exemple :
sqlCmd.CommanText = "INSERT INTO TABLE(...) VALUES(@nom, @mail, @adresse,
@dt);"
sqlCmd.Parameters.Add("@nom", LeNom)
sqlCmd.Parameters.Add("@mail", LeMail) etc ...

Là c'est la syntaxe la plus simple, mais il en existe d'autres plus 'fines'
(taille, types, in, inout, etc ...)

Pour ton problème de date, comme te le fait remarquer olivie hamou, ce n'est
qu'un question de format. De toutes façons l'heure sera stockée dans la
base, que tu la vois ou non. C'est à la relecture des données que tu pourras
ne pas l'afficher.



--
Fred
Avatar
Mathieu
Merci beaucoup pour les infos, j'ai utilise les parametres et il n'y a plus
besoin d'utiliser format.
Sinon la méthode Format se trouve dans quelle librairie ?? Je ne la trouve
pas

Mathieu


"Fix" a écrit dans le message de news:
42610c47$0$30160$
Bonjour,

j'ai un problème concernant le type datetime dans une base de donnée de
type Sql server.

Dans mon code je crée un objet DateTime dt = new
DateTime(Annee,Mois,Jour);
Au niveau de ma Requete : string Requete = INSERT INTO
Table(Nom,Mail,Adresse,DateReponse)
Values('"+nom+"','"+mail+"','"+adresse+"','"+dt+"');

dt est bien de type jj/mm/aaaa, lorsque je passe la ligne avec la requete
dt prends comme valeur jj/mm/aaaa 0:00:00

Je me demandais ou etait le prob ?

Y a t'il une méthode avec DateTime ou alors que dois je mettre dans ma BD
?

(DateReponse est de type DateTime de taille 8 dans ma table, pas moyen de
modifier la taille avec ce type, mais de toute facon je ne veux pas les
0:00:00)

Merci d'avance pour toutes aides apportées.

Mathieu



Avatar
Fred
Dans son message 4262975e$0$28060$
Mathieu nous dit :

Merci beaucoup pour les infos, j'ai utilise les parametres et il n'y
a plus besoin d'utiliser format.
Sinon la méthode Format se trouve dans quelle librairie ?? Je ne la
trouve pas



Oui, effectivement je n'ai pas fait attention ! Utilise ToString pour faire
cela (Format c'est du VB6 ou vbs)
MaDate.ToString( .... ) avec la chaîne de format entre les parenthèses.



--
Fred