OVH Cloud OVH Cloud

Query Date jour ... niveau Débutant !!!

1 réponse
Avatar
Usenews
"Fred BROUARD" <brouardf@club-internet.fr> a écrit dans le message de
news:exebJa9oDHA.964@TK2MSFTNGP10.phx.gbl...
> SELECT ...
> FROM ...
> WHERE MaDate BETWEEN DATEADD(MONTH, -3, CURRENT_TIMESTAMP)
> AND DATEADD(MONTH, 3, CURRENT_TIMESTAMP)
>
> Ceci sur MSDE...
>
> A +
>
> Usenews a écrit:
> > Bonjour,
> >
> > ... je souhaite sélectionner des enregistrements par rapport à la date
du
> > jour de consultation sur les trois mois précédents et les trois mois
> > suivants le tout sur plusieurs années.
> >
> > Merci d'avance
> >
> >
>
> --
> Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
> Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
> Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
> ****************** mailto:brouardf@club-internet.fr ******************
>


J'ai essayé cette formule SQL pour ma requête et ca ne marche pas.

Je suis novice... cela doit être pour ca.

Pouvez vous me détailler un peu plus votre solution.

merci

1 réponse

Avatar
J-Pierre
Bonjour Novice :-)))),

Ta requête SQL se trouve où ? dans une procédure stockée ? Dans ton projet Access ?

Dans une procédure stockée, la fonction DATEADD telle que Fred te l'a donnée te retourne
YYYY-MM-DD HH:MM:SS.FFF.

Je ne suis pas vraiment certain, mais il me semble que ce format n'est pas reconnu par SQL.

A titre d'exemple, essaie la requête suivante (testée) pour voir ce que retourne différentes variantes de T-SQL

SELECT CONVERT(DATETIME, DATEADD(MONTH, 3, CURRENT_TIMESTAMP), 101) as 'Date1',
LEFT(CONVERT(varchar, DATEADD(MONTH, 3, getDate()), 112), 10) as 'Date2',
LEFT(CONVERT(varchar, getDate(), 102), 10) as 'Date3'

Il faut dire que CONVERT de T-SQL, c'est un bouquin à lui tout seul.!!!!!!!!!
CURRENT_TIMESTAMP et GETDATE(), c'et quif-quif-bourricot
Je te recommande d'utiliser le format de Date2 (ISO, universellement reconnu) dans ta clause WHERE:

SELECT ...
FROM ...
WHERE MaDate BETWEEN LEFT(CONVERT(varchar, DATEADD(MONTH, -3, getDate()), 112), 10)
AND LEFT(CONVERT(varchar, DATEADD(MONTH, 3, getDate()), 112), 10)

J'ai testé ce select sur une de mes propres tables

Par contre, si ta requête est dans Access, tu utilises VBA, mais tu convertis toujours ta date au format ISO (YYYYMMDD)

J-Pierre -
Moi aussi, je suis expert SQL, spécialiste : SQL Server / web et plein d'autres choses encore...:-))))


"Usenews" a écrit dans le message de news:bol9ud$ir7$
"Fred BROUARD" a écrit dans le message de
news:
SELECT ...
FROM ...
WHERE MaDate BETWEEN DATEADD(MONTH, -3, CURRENT_TIMESTAMP)
AND DATEADD(MONTH, 3, CURRENT_TIMESTAMP)

Ceci sur MSDE...

A +

Usenews a écrit:
Bonjour,

... je souhaite sélectionner des enregistrements par rapport à la date
du


jour de consultation sur les trois mois précédents et les trois mois
suivants le tout sur plusieurs années.

Merci d'avance




--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************




J'ai essayé cette formule SQL pour ma requête et ca ne marche pas.

Je suis novice... cela doit être pour ca.

Pouvez vous me détailler un peu plus votre solution.

merci