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

Signaler
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
9 avril 2013
-
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
18 mai 2012
-
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

8 réponses

Messages postés
9
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
18 mai 2012

Essaie de remplacer WHERE MONTH(champDate) LIKE '3' par datepart(month,datejob) like '3'

Bonne chance
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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.
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
18 mai 2012

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
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
9 avril 2013

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 ?
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
9 avril 2013

Je dis ça parce que je ne trouve pas la fonction MONTH dans la MSDN de SQL Server CE...
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
18 mai 2012

hmmmm
tu sais jette un coup d'oeil sur cette page

http://support.microsoft.com/kb/953259/fr
Messages postés
14
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
9 avril 2013

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.
Messages postés
9
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
18 mai 2012

contente que çà a réussi
bon week end à toi également