Requete SQL COUNT WHERE MONTH() = xxxx

Résolu
cs_Zeny Messages postés 14 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 9 avril 2013 - 12 mai 2012 à 16:48
thebigmoon Messages postés 9 Date d'inscription mardi 17 avril 2012 Statut Membre 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
A voir également:

8 réponses

thebigmoon Messages postés 9 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 18 mai 2012
18 mai 2012 à 13:35
Essaie de remplacer WHERE MONTH(champDate) LIKE '3' par datepart(month,datejob) like '3'

Bonne chance
3
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
14 mai 2012 à 10:47
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.
0
thebigmoon Messages postés 9 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 18 mai 2012
17 mai 2012 à 16:20
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
0
cs_Zeny Messages postés 14 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 9 avril 2013
18 mai 2012 à 10:59
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Zeny Messages postés 14 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 9 avril 2013
18 mai 2012 à 11:15
Je dis ça parce que je ne trouve pas la fonction MONTH dans la MSDN de SQL Server CE...
0
thebigmoon Messages postés 9 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 18 mai 2012
18 mai 2012 à 13:30
hmmmm
tu sais jette un coup d'oeil sur cette page

http://support.microsoft.com/kb/953259/fr
0
cs_Zeny Messages postés 14 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 9 avril 2013
18 mai 2012 à 14:17
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.
0
thebigmoon Messages postés 9 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 18 mai 2012
18 mai 2012 à 16:29
contente que çà a réussi
bon week end à toi également
0
Rejoignez-nous