Requete SQL COUNT WHERE MONTH() = xxxx [Résolu]

Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Dernière intervention
9 avril 2013
- - Dernière réponse : thebigmoon
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Dernière intervention
18 mai 2012
- 18 mai 2012 à 16:29
Bonjour,

Je suis sous VB 2010 et SQL SERVER 2008 (en express edition)

Je cherche a faire une requete SQL pour compter le nombre d'enregistrements d'une table pour un mois specifique (que je précise selon une variable).
Le tri est a faire dans un champ de type datetime (champDate)

dans le genre "SELECT COUNT(*) FROM maTable WHERE MONTH(champDate) = 3"

J'aimerais utiliser cette requete (en executescalar) pour l'appliquer à mon objet commande et recuperer le resultat.
Malheuresement ma syntaxe ne semble pas correcte je dois mal utiliser la fonction MONTH...

Je débute sous sql et j'ai beau torturer Google depuis un moment je trouve pas d'exemple s'appliquant a mon probleme.

Si vous avez une solution ou un lien ... :-)

Merci

Zeny
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Dernière intervention
18 mai 2012
3
Merci
Essaie de remplacer WHERE MONTH(champDate) LIKE '3' par datepart(month,datejob) like '3'

Bonne chance

Merci thebigmoon 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de thebigmoon
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Dernière intervention
1 août 2013
0
Merci
Salut,

si on avait une erreur concrète (avec message complet et code) ce serait plus simple. Déjà si on pouvait savoir s'il l'erreur venait de SQL Server (requête erronée) ou de VB (lancement de la requête erroné) on en saurait bien plus.

Pour la fonction MONTH, un truc tout bête : champDate est-il bien de type date ? Car si c'est un VARCHAR il y a des chances pour que la valeur ne soit pas au bon format accepté par cette fonction.
Commenter la réponse de cs_jopop
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Dernière intervention
18 mai 2012
0
Merci
Salut,
je confirme ce que jopop a dit,il faut savoir si l'erreur provient de la requête SQL ou du VB
Concernant la syntaxe que tu as mise, essaie celle-ci, je l'ai testé et elle est correcte:
"SELECT COUNT(*) FROM maTable WHERE MONTH(champDate) like '3'"

si l'erreur continue toujours d'apparaître, c'est plutôt ton code VB qui n'est pas correcte
Commenter la réponse de thebigmoon
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Dernière intervention
9 avril 2013
0
Merci
Bonjour,

Merci pour votre aide, ca ne fonctionne pas chez mois.

Pour répondre à Jopop, oui mon champ est de type Datetime

Ma requete est placée dans une fonction comme ceci :

Public Function test(ByVal str As String)

        oConnexion.Open()
        myCommand = New SqlCeCommand(str, oConnexion)
        Dim result = myCommand.ExecuteScalar()
        oConnexion.Close()
        Return result

    End Function


que j'appel de cette maniére depuis ma procedure :

Dim res = test("SELECT COUNT(*) FROM maTable WHERE MONTH(champDate) LIKE '3'") 
Ca m'étonne que ca vienne du VB parce qu'en modifiant la requete par

Dim res = test("SELECT COUNT(*) FROM maTable WHERE champDate > '01/03/2012'") 

par exemple je récupére bien le nombre d'enregistrements dont la date est > à 01/03/2012

Le message d'erreur me dit ceci :

La fonction n'est pas reconnue par SQL Server Compact Edition. [ Name of function = MONTH,Data type (if known) = ]

Serait ce une limitation de SQL Server CE ?
Commenter la réponse de cs_Zeny
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Dernière intervention
9 avril 2013
0
Merci
Je dis ça parce que je ne trouve pas la fonction MONTH dans la MSDN de SQL Server CE...
Commenter la réponse de cs_Zeny
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Dernière intervention
18 mai 2012
0
Merci
hmmmm
tu sais jette un coup d'oeil sur cette page

http://support.microsoft.com/kb/953259/fr
Commenter la réponse de thebigmoon
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Dernière intervention
9 avril 2013
0
Merci
Merci thebigmoon

J'étais en train de tester le DatePart tu m'as aider pour la syntaxe.

ca marche avec :

SELECT COUNT(*) WHERE DATEPART(month, champDate) LIKE '3'

Merci encore, je vais pouvoir avancer un peu plus loin...

Bon Week End à toi.
Commenter la réponse de cs_Zeny
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Dernière intervention
18 mai 2012
0
Merci
contente que çà a réussi
bon week end à toi également
Commenter la réponse de thebigmoon

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.