2

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 変数で発生します: "Select CONVERT(datetime, dateVal )"。

最初の CONVERT を削除すると、エラーは次の行の次の CONVERT に移動します。したがって、明らかに、日時変換にエラーがあるようです。何が間違っているのかわかりませんが、アイデアはありますか? 皆さんありがとう。

4

1 に答える 1

2

私は を使用することを好みます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
于 2013-06-04T22:45:51.593 に答える