Pb insertion date dans une base de données SQL Server

Signaler
Messages postés
11
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
27 juillet 2006
-
Messages postés
11
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
27 juillet 2006
-
Bonjour.

<hr size="2" width="100%" />
        Dim todayDate As DateTime = DateTime.Now
        Dim sTodayDate As String

        sTodayDate = todayDate.ToString("d")
        Response.Write(sTodayDate)

        sSQL = "INSERT INTO [CASE_FILE](CASE_FILE_Code, COMPANY_CODE, SEVERITY_Code,     PRODUCT_Code, STATUS_Code, INGINEER_Code, CASE_FILE_OpeningDate, CASE_FILE_ClosingDate, CASE_FILE_TreatmentTime, CASE_FILE_ContactFirstName, CASE_FILE_ContactLastName, CASE_FILE_ContactPhoneNo, CASE_FILE_ContactEmail, CASE_FILE_Title, CASE_FILE_Description, CASE_FILE_ProductVersion)" _
        & " VALUES('4','" & Session("company") & "','" & DDL_CaseFileSeverity.SelectedValue & "','" & DDL_CaseFileProduct.SelectedValue & "','1','1','" & sTodayDate & "','','','" & TB_ContactFirstName.Text & "','" & TB_ContactLastName.Text & "','" & TB_ContactPhoneNo.Text & "','" & TB_ContactEMail.Text & "','" & TB_CaseFileTitle.Text & "','" & TB_CaseFileDetails.Text & "','" & TB_CaseFileMV.Text & "')"

<hr size="2" width="100%" />
Voila j'essaye d'insérer une date formatée dans un champs de type DateTime dans SQL Server mais c'est 01/01/1900 qui est inséré. J'ai testé ma variable avec un response.write(sTodayDate) et dans ce cas la date est bonne. Je ne comprends pas. J'avoue en avoir un peu marre là , ça fait un moment que je galère.

Merci de votre aide

4 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,


utilise les procédures stockées qui fera automatiquement la conversion entre ton champ datetime et le type datetime et cela évite aussi les requetes de type sql injection ...





<hr />

Cyril - MVS - MCP
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Bonjour, je ne suis pas tout à fait d'accord avec Cyril cette fois-ci  :

Que tu utilises ou pas les Procédures Stockées, c'est plutôt l'utilisation des Parameters qui t'évite les injections SQL et te font les conversions de types automatiquement.
Cf cet article.

Si tu peux, utilise à la fois les procédures stockées et les Parameters, c'est plus propre
Sinon, utilise uniquement les Parameters, ça résoudra tout de même ton problème...

A++



<hr width="100%" size="2" />
Nurgle (Antoine)
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
re,


si tu veux juste la date (sans l'heure) tu peux utiliser



cast('" & sTodayDate.Month & "." & sTodayDate.Day & "." & sTodayDate.Year & "' as smalldatetime)





ta requête adaptée donne:

 sSQL = "INSERT INTO [CASE_FILE](CASE_FILE_Code, COMPANY_CODE, SEVERITY_Code,     PRODUCT_Code, STATUS_Code, INGINEER_Code, CASE_FILE_OpeningDate, CASE_FILE_ClosingDate, CASE_FILE_TreatmentTime, CASE_FILE_ContactFirstName, CASE_FILE_ContactLastName, CASE_FILE_ContactPhoneNo, CASE_FILE_ContactEmail, CASE_FILE_Title, CASE_FILE_Description, CASE_FILE_ProductVersion)" _
        & " VALUES('4','" & Session("company") & "','" & DDL_CaseFileSeverity.SelectedValue & "','" & DDL_CaseFileProduct.SelectedValue & "','1','1',
cast('" & sTodayDate.Month & "." & sTodayDate.Day & "." & sTodayDate.Year & "' as smalldatetime)
,'','','" & TB_ContactFirstName.Text & "','" & TB_ContactLastName.Text & "','" & TB_ContactPhoneNo.Text & "','" & TB_ContactEMail.Text & "','" & TB_CaseFileTitle.Text & "','" & TB_CaseFileDetails.Text & "','" & TB_CaseFileMV.Text & "')"

yopyop
Messages postés
11
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
27 juillet 2006

Merci à tous les trois. Pour le moment, j'ai utilisé la solution de yopyop mais je vais me pencher sur les solutions de jesusonline et nurgle à plus long terme. En tout cas merci beaucoup :)