Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

critères mois et année d'une date

7 réponses
Avatar
ben
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 réponses

Avatar
Fred.M.
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


Avatar
ben
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


Avatar
Fred.M.
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


Avatar
ben
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


Avatar
Patrice
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" a écrit dans le message de news:

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




Avatar
ben
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


Avatar
bruno reiter
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" wrote in message
news:
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