-2

这是我正在处理的 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 来根据日期过滤结果的条件下。但它不工作。

4

3 回答 3

1

您以错误的方式连接字符串。

尝试这个

'01/01/'+ @year ,'01/02/'+ @year ,
于 2013-05-07T09:04:17.770 回答
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
            ))
于 2013-05-07T09:03:48.707 回答
-1

在 Microsoft SQL Server 中:

--
-- Create test case
--
DECLARE @myDateTime DATETIME
SET @myDateTime = '2013-05-07'

--
-- Convert string
--
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
于 2013-05-07T08:58:41.950 回答