2013-06-04 28 views
1

我們已經運行完全在MSSQL,但未能在MySQL運行下面的查詢:MySQL的轉換爲datetime語法錯誤:意外IDENT_QUOTED

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得到的錯誤說:

syntax error, unexpected IDENT_QUOTED

第一行上的dateVal變量發生此錯誤:「選擇CONVERT(日期時間,dateVal)」。

如果我們刪除第一個CONVERT,那麼錯誤將轉到下一行的下一個CONVERT。所以,顯然,我們的日期時間轉換似乎存在錯誤。不知道我們做錯了什麼,有什麼想法嗎?謝謝大家。

+0

什麼是'DateClickUTC'字段的數據類型?看看你的'WHERE'子句,它似乎已經是一個日期時間,所以也許不需要轉換? – sgeddes

+0

http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_convert –

+1

在MySQL中,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 
+0

看起來不錯。謝謝。 – madeFromCode

+0

@madeFromCode - np,很高興我們可以幫忙! – sgeddes