Sur votre seconde requête il manque une virgule après b.InstanceName.
Pour le problème de format de données, vous pouvez donner le résultat de la requête suivante :
Code:
1
2 select top 50 distinct CounterDateTime from dbo.CounterData
Version imprimable
Sur votre seconde requête il manque une virgule après b.InstanceName.
Pour le problème de format de données, vous pouvez donner le résultat de la requête suivante :
Code:
1
2 select top 50 distinct CounterDateTime from dbo.CounterData
quand j'execute:
j'ai encore le msg d'erreur:Code:
1
2
3
4
5
6
7
8 SELECT a.CounterID,b.ObjectName,b.MachineName,b.InstanceName, DATEPART(day, Cast(a.CounterDateTime AS DateTime)) AS JOUR, AVG(a.CounterValue) AS MOYENNE FROM dbo.CounterData as a FULL OUTER JOIN dbo.CounterDetails as b ON a.CounterID=b.CounterID GROUP BY a.CounterID,b.ObjectName,b.MachineName,b.InstanceName,a.CounterDateTime;
En concernant:Citation:
Server: Msg 241, Level 16, State 1, Line 1
Syntax error converting datetime from character string.
ça me fait le msg:Code:
1
2 SELECT top 50 DISTINCT CounterDateTime FROM dbo.CounterData;
A votre avis, pourquoi ça ne marche toujours pas?Citation:
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'DISTINCT'.
Intervertissez DISTINCT et TOP 50.
Vous êtes très débutant n'est-ce pas ? ;)
ouiiii, exact, je suis débutante ;) du coup je n'arrive pas à repérer les erreurs même les les plus banales :aie:
Vous avez une idée pourquoi ma requête ne s'exécute pas ? ;)
Oui, c'est parce que votre colonne CounterDateTime qui est censée contenir une date n'a pas un format bien défini.
C'est justement pour voir quelques données que je vous demande cette requête :
Code:
1
2 SELECT DISTINCT top 50 CounterDateTime FROM dbo.CounterData
2010-02-23 18:15:08.717
2010-02-23 18:20:08.715
2010-02-23 18:25:08.714
...
voilà c'est le résultat de requete.
NB: CounterDateTime est de type Char
On peut essayer ça alors :
Code:
1
2
3 SELECT DISTINCT top 50 CounterDateTime FROM dbo.CounterData WHERE isdate(CounterDateTime) = 0
cette requête me fait sortir un ensemble de dates, or moi, j'ai besoin que ma requête s'exécute sans message d'erreur ;)
Ma requête:
Le message d'erreur:Code:
1
2
3
4
5
6
7
8 SELECT a.CounterID,b.ObjectName,b.MachineName,b.InstanceName, DATEPART(week, Cast(a.CounterDateTime AS DateTime)) AS SEMAINE, AVG(a.CounterValue) AS MOYENNE FROM dbo.CounterData as a FULL OUTER JOIN dbo.CounterDetails as b ON a.CounterID=b.CounterID GROUP BY a.CounterID,b.ObjectName,b.MachineName,b.InstanceName,a.CounterDateTime;
Je veux en fait calculer la moyenne journalière comme j'ai expliqué précédemment.Citation:
Server: Msg 241, Level 16, State 1, Line 1
Syntax error converting datetime from character string.
Ce que j'essaie de vous amener à comprendre, c'est que vos "dates" stockées dans un char ne sont pas toujours des dates, contrairement à ce que vous pensez.
De surcroit c'est exactement ce que dis le message d'erreur :
Citation:
Syntax error converting datetime from character string.
Vous voulez dire que je dois modifier le type de la colonne à DateTime au lieu de Char?
Si vous le pouvez, c'est évidemment la meilleure solution.
Quel est l'intéret de stocker des dates dans du texte ?
Réponse : aucun ;)
huuummmm, exact ;)
Merci Waldar pour vos réponses.:ccool:
Bonne journée à vous.
Bonjour,
voilà, je suis de retour, et malheureusement je ne peux pas modifier le type en DateTime, je dois le garder en Char. :(
ma requête est la suivante:
Le Cast ne fonctionne pas pour convertir CounterDateTime en DateTime.Code:
1
2
3
4
5
6
7
8 SELECT a.CounterID,b.ObjectName,b.MachineName,b.InstanceName, DATEPART(day, Cast(a.CounterDateTime AS DateTime))as JOUR, AVG(a.CounterValue) AS MOYENNE FROM dbo.CounterData as a FULL OUTER JOIN dbo.CounterDetails as b ON a.CounterID=b.CounterID GROUP BY a.CounterID,b.ObjectName,b.MachineName,b.InstanceName,a.CounterDateTime;
Merci d'avance pour votre aide.