Bonjour,
Je me permet de poster ici car j'ai un problème avec le type DateTime que j'utilise dans une requête paramétrée ADO.Net.
Pour faire simple, j'ai une table d'une base de données dont une des colonnes est de type DATETIME (la colonne nommée INSD). Je veux effectuer une requète de type SELECT sur cette table en incluant un paramètre de sélection sur cette fameuse colonne (jusque là, y a rien de bien compliqué).
Je créer ma commande :
Puis je lui passe les paramètres comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 cmd = myConnexion.CreateCommand(); ... cmd.CommandText = "AND ll.[INSD] = @_INSD_\r\n"; ...
Où generatedDate est une variable locale contenant la date sur laquelle je veux faire ma recherche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 cmd.Parameters.Add("@_INSD_", SqlDbType.DateTime); cmd.Parameters["@_INSD_"].SqlValue = generatedDate;
Seulement voilà. Alors que la requête initiale fonctionne (à merveille) dans Management Studio, cette dernière ne fonctionne pas dans mon code (bé oui, sinon je n'aurai pas posté sur le forum).
Après un bon après-midi de recherche, je me suis lancé dans le profilage SQL Server (je ne connaissais pas, j'ai découvert cet après-midi, et je dois avouer que j'adore !!!).
J'ai donc ainsi récupéré la requête généré par ce bon objet ADO.Net qu'est le SqlCommand.
Celle-ci contient, à la fin de la requête, mon paramètre @_INSD_ qui est écrit comme suit :
Mon gros problème c'est que la requête que génère ADO.net ne fonctionne effectivement pas sous Management Studio. Il faut inverser le mois et date pour que ça marche (
Code : Sélectionner tout - Visualiser dans une fenêtre à part @_INSD_='2011-08-01 11:16:52.7470000'
).
Code : Sélectionner tout - Visualiser dans une fenêtre à part @_INSD_='2011-01-08 11:16:52.7470000'
Dans l'hypothèse où le problème viendrait d'ADO.Net, j'aimerai comprendre pourquoi !!! En effet, il met la date au format YearMonthDate. Si celle-ci doit être au format YearDateMonth, pourquoi ne fait-il pas l'ajustement automatiquement ?
Et sinon, dans l'hypothèse où le problème viendrait de SQL Server, comment faire pour le résoudre ?
Pour infos, ma connection s'ouvre sur la langue fr-fr (Français (France)) et avec le format de date DateMonthYear, par défaut.
Pour être sûr de ça, j'avai même insérer, temporairement, un bout de code exécutant ces 2 requêtes à chaque ouverture de connexion :
Je l'ai viré, étant donné qu'il ne résolvait pas le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SET LANGUAGE French; SET DATEFORMAT DMY;
Si quelqu'un a une idée, voir même la solution, par pitié, qu'il m'aide !!!
Par avance merci.
--
XR
Partager