/ / varcharのdatetimeを変換し、SQL Server 2005のwhere句で使用する-sql、sql-server、datetime、varchar

varcharでdatetimeを変換し、SQL Server 2005のwhere句で使用します。 - sql、sql-server、datetime、varchar

これは私が取り組んでいる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)