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

Requêtes avec date et trie

1 réponse
Avatar
Céline BALLEREAU
Bonjour =E0 tous,

J'ai un probl=E8me avec les dates. J'ai un champ=20
appel=E9 "DateTime" qui est du format "dd mon yyyy hh:mm:ss".
Je souhaite faire une requ=EAte qui liste de mani=E8re=20
croissante les quantit=E9s produites par date de format "dd=20
mon yyyy".=20
J'utilise pour cela la fonction CONVERT sur le=20
champ "DateTime" et la fonction de trie croissant. Le=20
classement affich=E9 par la requ=EAte n'est pas tri=E9=20
correctement.=20
J'ai ajout=E9 =E0 cette requ=EAte le champ "DateTime" pour que=20
le trie soit fait directement sur ce champ, mais le=20
regroupement par date de format "dd mon yyyy" ne se fait=20
plus. Voici les 2 requ=EAtes test=E9es.

Requ=EAte 1 : Trie sur le champ "DateTime" convertit

"SELECT TOP 100 PERCENT CONVERT(VARCHAR(10),=20
[timestamp], 103) AS [Date r=E9duite], CODE_EQUIPE_VAL0 AS=20
Equipe, CODE_MACHINE_VAL0 AS Machine,=20
SUM(QTE_PRODUITE_VAL0) AS [Qt=E9=20
produite]
FROM dbo.INFO_ATELIER
GROUP BY CONVERT(VARCHAR(10), [timestamp], 103),=20
CODE_EQUIPE_VAL0, CODE_MACHINE_VAL0
HAVING (CODE_MACHINE_VAL0 =3D '100_1') AND=20
(CODE_EQUIPE_VAL0 =3D 'Equipe 1')
ORDER BY CONVERT(VARCHAR(10), [timestamp], 103)"

Requ=EAte 2 : Trie sur le champ "DateTime" non convertit et=20
conversion du champ "DateTime" pour regroupement par date=20
de format "dd mon yyyy"

"SELECT TOP 100 PERCENT CONVERT(VARCHAR(10),=20
[timestamp], 103) AS [Date r=E9duite], CODE_EQUIPE_VAL0 AS=20
Equipe, CODE_MACHINE_VAL0 AS Machine,=20
SUM(QTE_PRODUITE_VAL0) AS [Qt=E9=20
produite]
FROM dbo.INFO_ATELIER
GROUP BY CONVERT(VARCHAR(10), [timestamp], 103),=20
CODE_EQUIPE_VAL0, CODE_MACHINE_VAL0, [timestamp]
HAVING (CODE_MACHINE_VAL0 =3D '100_1') AND=20
(CODE_EQUIPE_VAL0 =3D 'Equipe 1')
ORDER BY [timestamp]"

Voil=E0, je faisais ce type de requ=EAte san probl=E8me sur=20
Access, mais l=E0 je ne vois pas comment faire.
Merci d'avance pour vos conseils,

C=E9line

1 réponse

Avatar
zarko
Je ne sais pas si cela va resoudre ton probleme , mais voici une fonction
qui permet de retire l'heure de la date , puis faire un tri sur cette
colonne ....

pour utiliser la fonction il faut la preceder avec le nom de l'utilisateur
qui a cree la fonction

--------------------------------------------------------------------------
if Exists( Select * from SysObjects where name='TRUNCDATE' ) begin
drop function TRUNCDATE
end
go

create function TRUNCDATE
(
@D datetime
) returns Datetime
as
begin
Return DateAdd( day , DateDiff( Day , @@DATEFIRST , @D ),@@DATEFIRST)
end
go

--------------------------------------------------------------------------






"Céline BALLEREAU" a écrit dans le message de
news:2b8f701c467ed$5ae8e8e0$
Bonjour à tous,

J'ai un problème avec les dates. J'ai un champ
appelé "DateTime" qui est du format "dd mon yyyy hh:mm:ss".
Je souhaite faire une requête qui liste de manière
croissante les quantités produites par date de format "dd
mon yyyy".
J'utilise pour cela la fonction CONVERT sur le
champ "DateTime" et la fonction de trie croissant. Le
classement affiché par la requête n'est pas trié
correctement.
J'ai ajouté à cette requête le champ "DateTime" pour que
le trie soit fait directement sur ce champ, mais le
regroupement par date de format "dd mon yyyy" ne se fait
plus. Voici les 2 requêtes testées.

Requête 1 : Trie sur le champ "DateTime" convertit

"SELECT TOP 100 PERCENT CONVERT(VARCHAR(10),
[timestamp], 103) AS [Date réduite], CODE_EQUIPE_VAL0 AS
Equipe, CODE_MACHINE_VAL0 AS Machine,
SUM(QTE_PRODUITE_VAL0) AS [Qté
produite]
FROM dbo.INFO_ATELIER
GROUP BY CONVERT(VARCHAR(10), [timestamp], 103),
CODE_EQUIPE_VAL0, CODE_MACHINE_VAL0
HAVING (CODE_MACHINE_VAL0 = '100_1') AND
(CODE_EQUIPE_VAL0 = 'Equipe 1')
ORDER BY CONVERT(VARCHAR(10), [timestamp], 103)"

Requête 2 : Trie sur le champ "DateTime" non convertit et
conversion du champ "DateTime" pour regroupement par date
de format "dd mon yyyy"

"SELECT TOP 100 PERCENT CONVERT(VARCHAR(10),
[timestamp], 103) AS [Date réduite], CODE_EQUIPE_VAL0 AS
Equipe, CODE_MACHINE_VAL0 AS Machine,
SUM(QTE_PRODUITE_VAL0) AS [Qté
produite]
FROM dbo.INFO_ATELIER
GROUP BY CONVERT(VARCHAR(10), [timestamp], 103),
CODE_EQUIPE_VAL0, CODE_MACHINE_VAL0, [timestamp]
HAVING (CODE_MACHINE_VAL0 = '100_1') AND
(CODE_EQUIPE_VAL0 = 'Equipe 1')
ORDER BY [timestamp]"

Voilà, je faisais ce type de requête san problème sur
Access, mais là je ne vois pas comment faire.
Merci d'avance pour vos conseils,

Céline