|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
bonjour à tous, j'ai une table qui contient des dates je souhaite faire une
extraction en fonction du mois et de l'année, exemple les enregistrements compris entre le 08/07 et le 12/07, malgrés plusieurs tentatives je tombe toujours sur une insulte de SQL du type erreur de syntaxe lors de la conversion d'une chaine de caractère en type de donnée smalldatetime. je continu de plancher dessus mais j'avoue qu'un petit coup de pouce serait le bien venu. Merci et bonne journée à tous |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Bonjour Ben,
Précises-tu dans ta clause Where l'année ? Par ailleurs vérifie de même le format date US ou FR (dd/mm/yyyy) ex: ..WHERE MaDate Between '08/07/2007' AND '12/07/2007' Fred.M. "ben" a écrit : > bonjour à tous, j'ai une table qui contient des dates je souhaite faire une > extraction en fonction du mois et de l'année, exemple > les enregistrements compris entre le 08/07 et le 12/07, malgrés plusieurs > tentatives je tombe toujours sur une insulte de SQL du type > erreur de syntaxe lors de la conversion d'une chaine de caractère en type de > donnée smalldatetime. > > je continu de plancher dessus mais j'avoue qu'un petit coup de pouce serait > le bien venu. > Merci et bonne journée à tous |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
salut fred en fait d'un point de vu simpliste la requete serait comme ça
where datefact between '06/07' and '08/07' autrement dit les enregistremensts compris entre juin 2007 et aout 2007. "Fred.M." a écrit : > Bonjour Ben, > Précises-tu dans ta clause Where l'année ? > Par ailleurs vérifie de même le format date US ou FR (dd/mm/yyyy) > > ex: ..WHERE MaDate Between '08/07/2007' AND '12/07/2007' > > Fred.M. > > "ben" a écrit : > > > bonjour à tous, j'ai une table qui contient des dates je souhaite faire une > > extraction en fonction du mois et de l'année, exemple > > les enregistrements compris entre le 08/07 et le 12/07, malgrés plusieurs > > tentatives je tombe toujours sur une insulte de SQL du type > > erreur de syntaxe lors de la conversion d'une chaine de caractère en type de > > donnée smalldatetime. > > > > je continu de plancher dessus mais j'avoue qu'un petit coup de pouce serait > > le bien venu. > > Merci et bonne journée à tous |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
On en revient à la même chose : datefact étant de format date, il te faut
t'exprimer en date. Cela te donnera donc pour ton exemple : ...WHERE datefact between '01/06/07' AND '31/08/07' Si tu veux vraiment jouer avec le mois et l'année tu peux utiliser la fonction DatePart mais pour ton exemple c'est se compliquer la vie plus qu'autre chose. http://msdn2.microsoft.com/fr-fr/library/ms174420.aspx Fred.M. "ben" a écrit : > salut fred en fait d'un point de vu simpliste la requete serait comme ça > where datefact between '06/07' and '08/07' autrement dit les > enregistremensts compris entre juin 2007 et aout 2007. > > > "Fred.M." a écrit : > > > Bonjour Ben, > > Précises-tu dans ta clause Where l'année ? > > Par ailleurs vérifie de même le format date US ou FR (dd/mm/yyyy) > > > > ex: ..WHERE MaDate Between '08/07/2007' AND '12/07/2007' > > > > Fred.M. > > > > "ben" a écrit : > > > > > bonjour à tous, j'ai une table qui contient des dates je souhaite faire une > > > extraction en fonction du mois et de l'année, exemple > > > les enregistrements compris entre le 08/07 et le 12/07, malgrés plusieurs > > > tentatives je tombe toujours sur une insulte de SQL du type > > > erreur de syntaxe lors de la conversion d'une chaine de caractère en type de > > > donnée smalldatetime. > > > > > > je continu de plancher dessus mais j'avoue qu'un petit coup de pouce serait > > > le bien venu. > > > Merci et bonne journée à tous |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
oui fred tu as raison cependant dans le cas que j'ennonce il faut
impérativement travailler avec le mois , j'ai jetté un oeil sur la fonction que tu préconise, la question que je me pose c si je peux utiliser cette fonction simultanement pour le mois et l'année exemple : where datefac bettwen datepart(mm,madatedebut ) and datepart(mm,madatefin) and between datepart(yy,madatedebut ) and datepart(yy,madatefin) je vais essayer "Fred.M." a écrit : > On en revient à la même chose : datefact étant de format date, il te faut > t'exprimer en date. Cela te donnera donc pour ton exemple : > ..WHERE datefact between '01/06/07' AND '31/08/07' > > Si tu veux vraiment jouer avec le mois et l'année tu peux utiliser la > fonction DatePart mais pour ton exemple c'est se compliquer la vie plus > qu'autre chose. > http://msdn2.microsoft.com/fr-fr/library/ms174420.aspx > > Fred.M. > > "ben" a écrit : > > > salut fred en fait d'un point de vu simpliste la requete serait comme ça > > where datefact between '06/07' and '08/07' autrement dit les > > enregistremensts compris entre juin 2007 et aout 2007. > > > > > > "Fred.M." a écrit : > > > > > Bonjour Ben, > > > Précises-tu dans ta clause Where l'année ? > > > Par ailleurs vérifie de même le format date US ou FR (dd/mm/yyyy) > > > > > > ex: ..WHERE MaDate Between '08/07/2007' AND '12/07/2007' > > > > > > Fred.M. > > > > > > "ben" a écrit : > > > > > > > bonjour à tous, j'ai une table qui contient des dates je souhaite faire une > > > > extraction en fonction du mois et de l'année, exemple > > > > les enregistrements compris entre le 08/07 et le 12/07, malgrés plusieurs > > > > tentatives je tombe toujours sur une insulte de SQL du type > > > > erreur de syntaxe lors de la conversion d'une chaine de caractère en type de > > > > donnée smalldatetime. > > > > > > > > je continu de plancher dessus mais j'avoue qu'un petit coup de pouce serait > > > > le bien venu. > > > > Merci et bonne journée à tous |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Je ne vois d'où vient cette obligation. Ce que veux dire Fred c'est que
entre juin et août c'est entre le 1er jour de juin et le dernier d'août ce qui sera sans doute plus efficace. Si le pb est de trouver le dernier jour d'un mois. Il suffira de supprimer 1 au 1er jour du mois suivant. "ben" <ben@discussions.microsoft.com> a écrit dans le message de news: 1A00312E-80C2-46D1-9FA6-4A35E4F3B3DD@microsoft.com... > oui fred tu as raison cependant dans le cas que j'ennonce il faut > impérativement travailler avec le mois , j'ai jetté un oeil sur la > fonction > que tu préconise, la question que je me pose c si je peux utiliser cette > fonction simultanement pour le mois et l'année exemple : > > where datefac bettwen datepart(mm,madatedebut ) and datepart(mm,madatefin) > and between datepart(yy,madatedebut ) and datepart(yy,madatefin) > > je vais essayer > > > "Fred.M." a écrit : > >> On en revient à la même chose : datefact étant de format date, il te faut >> t'exprimer en date. Cela te donnera donc pour ton exemple : >> ..WHERE datefact between '01/06/07' AND '31/08/07' >> >> Si tu veux vraiment jouer avec le mois et l'année tu peux utiliser la >> fonction DatePart mais pour ton exemple c'est se compliquer la vie plus >> qu'autre chose. >> http://msdn2.microsoft.com/fr-fr/library/ms174420.aspx >> >> Fred.M. >> >> "ben" a écrit : >> >> > salut fred en fait d'un point de vu simpliste la requete serait comme >> > ça >> > where datefact between '06/07' and '08/07' autrement dit les >> > enregistremensts compris entre juin 2007 et aout 2007. >> > >> > >> > "Fred.M." a écrit : >> > >> > > Bonjour Ben, >> > > Précises-tu dans ta clause Where l'année ? >> > > Par ailleurs vérifie de même le format date US ou FR (dd/mm/yyyy) >> > > >> > > ex: ..WHERE MaDate Between '08/07/2007' AND '12/07/2007' >> > > >> > > Fred.M. >> > > >> > > "ben" a écrit : >> > > >> > > > bonjour à tous, j'ai une table qui contient des dates je souhaite >> > > > faire une >> > > > extraction en fonction du mois et de l'année, exemple >> > > > les enregistrements compris entre le 08/07 et le 12/07, malgrés >> > > > plusieurs >> > > > tentatives je tombe toujours sur une insulte de SQL du type >> > > > erreur de syntaxe lors de la conversion d'une chaine de caractère >> > > > en type de >> > > > donnée smalldatetime. >> > > > >> > > > je continu de plancher dessus mais j'avoue qu'un petit coup de >> > > > pouce serait >> > > > le bien venu. >> > > > Merci et bonne journée à tous |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Re
Je me suis inspiré de vos observation et en fait j'ai contourné le prb voila comment je fais : hypo de base : les enrgistrements compris entre le MaDateDebut et le MaDateFin 1 j'appel une fonction qui me calcul le nombre de jour qu'il y a dans la MaDateFin (trouver sur le web merci la toile) Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear As Integer) As Integer DaysInMonth = Day(DateAdd("d", -1, DateAdd("m", 1, DateSerial(nYear, nMonth, 1)))) nbjourmois = DaysInMonth End Function ensuite j'écris ceci dans la clause where Datefac between '" & "01/" & Right(MaDateDebut, 5) & "' AND '" & nbjourmois & "/" & Right(MadateFin, 5) & "' et puis voila merci à vous tous Fred et Pat @+ "Fred.M." a écrit : > On en revient à la même chose : datefact étant de format date, il te faut > t'exprimer en date. Cela te donnera donc pour ton exemple : > ..WHERE datefact between '01/06/07' AND '31/08/07' > > Si tu veux vraiment jouer avec le mois et l'année tu peux utiliser la > fonction DatePart mais pour ton exemple c'est se compliquer la vie plus > qu'autre chose. > http://msdn2.microsoft.com/fr-fr/library/ms174420.aspx > > Fred.M. > > "ben" a écrit : > > > salut fred en fait d'un point de vu simpliste la requete serait comme ça > > where datefact between '06/07' and '08/07' autrement dit les > > enregistremensts compris entre juin 2007 et aout 2007. > > > > > > "Fred.M." a écrit : > > > > > Bonjour Ben, > > > Précises-tu dans ta clause Where l'année ? > > > Par ailleurs vérifie de même le format date US ou FR (dd/mm/yyyy) > > > > > > ex: ..WHERE MaDate Between '08/07/2007' AND '12/07/2007' > > > > > > Fred.M. > > > > > > "ben" a écrit : > > > > > > > bonjour à tous, j'ai une table qui contient des dates je souhaite faire une > > > > extraction en fonction du mois et de l'année, exemple > > > > les enregistrements compris entre le 08/07 et le 12/07, malgrés plusieurs > > > > tentatives je tombe toujours sur une insulte de SQL du type > > > > erreur de syntaxe lors de la conversion d'une chaine de caractère en type de > > > > donnée smalldatetime. > > > > > > > > je continu de plancher dessus mais j'avoue qu'un petit coup de pouce serait > > > > le bien venu. > > > > Merci et bonne journée à tous |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
attention aux fonctions dans le where qui peuvent empêcher l'utilisation
d'un index sur la colonne date where coldate between '20070501' and '20070531' permet d'utiliser l'index where year(coldate) = 2007 and month(coldate) = 5 ne permet pas br "ben" <ben@discussions.microsoft.com> wrote in message news:5EEC8F1B-1CE9-4233-8819-BBFD676E24F6@microsoft.com... > Re > Je me suis inspiré de vos observation et en fait j'ai contourné le prb > voila > comment je fais : > > hypo de base : les enrgistrements compris entre le MaDateDebut et le > MaDateFin > > 1 j'appel une fonction qui me calcul le nombre de jour qu'il y a dans la > MaDateFin > > (trouver sur le web merci la toile) > > > > > > Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear As > Integer) > As Integer > > DaysInMonth = Day(DateAdd("d", -1, DateAdd("m", 1, DateSerial(nYear, > nMonth, 1)))) > nbjourmois = DaysInMonth > End Function > > > ensuite j'écris ceci dans la clause where > > Datefac between '" & "01/" & Right(MaDateDebut, 5) & "' AND '" & > nbjourmois > & "/" & Right(MadateFin, 5) & "' > > et puis voila merci à vous tous Fred et Pat @+ > "Fred.M." a écrit : > >> On en revient à la même chose : datefact étant de format date, il te faut >> t'exprimer en date. Cela te donnera donc pour ton exemple : >> ..WHERE datefact between '01/06/07' AND '31/08/07' >> >> Si tu veux vraiment jouer avec le mois et l'année tu peux utiliser la >> fonction DatePart mais pour ton exemple c'est se compliquer la vie plus >> qu'autre chose. >> http://msdn2.microsoft.com/fr-fr/library/ms174420.aspx >> >> Fred.M. >> >> "ben" a écrit : >> >> > salut fred en fait d'un point de vu simpliste la requete serait comme >> > ça >> > where datefact between '06/07' and '08/07' autrement dit les >> > enregistremensts compris entre juin 2007 et aout 2007. >> > >> > >> > "Fred.M." a écrit : >> > >> > > Bonjour Ben, >> > > Précises-tu dans ta clause Where l'année ? >> > > Par ailleurs vérifie de même le format date US ou FR (dd/mm/yyyy) >> > > >> > > ex: ..WHERE MaDate Between '08/07/2007' AND '12/07/2007' >> > > >> > > Fred.M. >> > > >> > > "ben" a écrit : >> > > >> > > > bonjour à tous, j'ai une table qui contient des dates je souhaite >> > > > faire une >> > > > extraction en fonction du mois et de l'année, exemple >> > > > les enregistrements compris entre le 08/07 et le 12/07, malgrés >> > > > plusieurs >> > > > tentatives je tombe toujours sur une insulte de SQL du type >> > > > erreur de syntaxe lors de la conversion d'une chaine de caractère >> > > > en type de >> > > > donnée smalldatetime. >> > > > >> > > > je continu de plancher dessus mais j'avoue qu'un petit coup de >> > > > pouce serait >> > > > le bien venu. >> > > > Merci et bonne journée à tous |
|
![]() |
| Outils de la discussion | |
|
|