MySQL преобразуется в синтаксическую ошибку даты и времени: неожиданный IDENT_QUOTED
У нас есть следующий запрос, который отлично работает в MSSQL, но не работает в MySQL:
select CONVERT(datetime, dateVal) as DateOccurred, itemID, COUNT(*) as Hits from (
select itemID, CONVERT(datetime, DateClickUTC) as dateVal
from tb_items
where DateClickUTC >= '2008-06-03 22:00:28.893' and DateClickUTC <= '2013-06-03 22:00:28.893'
group by CONVERT(datetime, DateClickUTC), UserID, itemID) as a
group by a.dateVal, itemID
Ошибка, которую мы получаем из MySQL, говорит:
синтаксическая ошибка, неожиданный IDENT_QUOTED
Эта ошибка возникает в переменной dateVal в первой строке: "Выберите CONVERT (datetime, dateVal)".
Если мы удалим первый CONVERT, то ошибка перейдет к следующему CONVERT в следующей строке. Итак, очевидно, что, похоже, произошла ошибка с нашим преобразованием даты и времени. Не уверен, что мы делаем неправильно, есть идеи? Спасибо всем.
1 ответ
Я предпочитаю использовать CAST
, но, как уже говорили другие, вам нужно указать тип после поля следующим образом:
convert(DateClickUTC,datetime)
Вот рабочий пример использования CAST
:
select a.dateVal as DateOccurred, itemID, COUNT(*) as Hits
from (
select itemID, cast(DateClickUTC as datetime) as dateVal
from tb_items
where DateClickUTC >= '2008-06-03 22:00:28.893' and DateClickUTC <= '2013-06-03 22:00:28.893'
group by cast(DateClickUTC as datetime), UserID, itemID
) as a
group by a.dateVal, itemID
Кстати, вам на самом деле не нужен подзапрос в этом случае - это также должно работать:
select cast(DateClickUTC as datetime) as DateOccurred,
itemID,
COUNT(*) as Hits
from tb_items
where DateClickUTC >= '2008-06-03 22:00:28.893' and DateClickUTC <= '2013-06-03 22:00:28.893'
group by cast(DateClickUTC as datetime), itemID