Ошибка SQL: ORA-00936: отсутствует выражение - PullRequest
1 голос
/ 03 января 2012

Подскажите, пожалуйста, в чем может быть ошибка в моем sql? У меня отсутствует ошибка выражения, но я не могу найти ошибку. Заранее большое спасибо.

SELECT SYSTEMNAME, round(MAX(GBL_CPU_TOTAL_UTIL),2) AS AVE_CPU,
convert(varchar(20),DATEADD(hour, DATEDIFF(hour, 0, DATETIME), 0),110) AS DATE
FROM dbo.[GLOBAL]
WHERE (SYSTEMNAME IN ( 'X1','X2','X3'))    
AND (DATETIME > DATEADD(month, - 24, GETDATE()))
AND (DATETIME BETWEEN '12-27-2011 00:00' AND '12-30-2011 00:00')
GROUP BY SYSTEMNAME, convert(varchar(20),
DATEADD(hour, DATEDIFF(hour, 0, DATETIME), 0),110)
ORDER BY DATE

Ошибка:

ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:
Error at Line: 2 Column: 9

1 Ответ

2 голосов
/ 03 января 2012

convert(varchar(20), ...?

Насколько я знаю, convert используется для преобразования строки из одного набора символов в другой. varchar(20) - это , а не строка. Это также, вероятно, имеет место, поскольку эта «строка 2, столбец 9» именно там, где находится varchar(20).

Документ для convert гласит:


convert( string1 , char_set_to , [ char_set_from ] )
string1 is the string to be converted.
char_set_to is the character set to convert to.
char_set_from is the character set to convert from.


Если вы намереваетесь привести разницу дат в тип varchar(20), вам, вероятно, следует использовать cast.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...