これは私が取り組んでいるSQLクエリです。一時テーブルにフィルタリングされた結果をダンプしています 「「、」付近の構文が正しくありません」というエラーが表示されます。
クエリ。
DECLARE @year VARCHAR(50)
SET @year = "2012"
SELECT
[DAGName]
, CONVERT(DATETIME, convert(VARCHAR(10), [ReportDate], 103), 103) AS FilteredDate
INTO TempData FROM MailboxDatabase
WHERE (CONVERT(VARCHAR(10), [ReportDate], 103)
IN ( "01/01/"+ @year +,"01/02/"+ @year +,
"01/03/"+ @year +,"01/04/"+ @year +,
"01/05/"+ @year +,"01/06/"+ @year +,
"01/07/"+ @year +,"01/08/"+ @year +,
"01/09/"+ @year +,"01/10/"+ @year +,
"01/11/"+ @year +,"01/12/"+ @year +
))
エラーは、日付に基づいて結果をvarcharに変換してフィルター処理しようとしている条件で発生します。しかし、それは機能していません。
回答:
回答№1は1間違った方法で文字列を連結しています。
これを試して
"01/01/"+ @year ,"01/02/"+ @year ,
回答№2の場合は0
DECLARE @year VARCHAR(50)
SET @year = "2012"
SELECT
[DAGName]
, CONVERT(DATETIME, convert(VARCHAR(10), [ReportDate], 103), 103) AS FilteredDate
INTO TempData FROM MailboxDatabase
WHERE (CONVERT(VARCHAR(10), [ReportDate], 103)
IN ( "01/01/"+ @year ,"01/02/"+ @year,
"01/03/"+ @year,"01/04/"+ @year,
"01/05/"+ @year,"01/06/"+ @year,
"01/07/"+ @year,"01/08/"+ @year,
"01/09/"+ @year,"01/10/"+ @year,
"01/11/"+ @year,"01/12/"+ @year
))
回答№3の場合は-1
Microsoft SQL Serverの場合:
--
-- Create test case
--
DECLARE @myDateTime DATETIME
SET @myDateTime = "2013-05-07"
--
-- Convert string
--
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)