"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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <usenews@usenews.com> a écrit dans le message de news:bol9ud$ir7$1@news-reader1.wanadoo.fr...
"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.
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.