首页 > 解决方案 > 无法修复 sql 查询中的语法错误

问题描述

我正在尝试使用以下查询将临时表中的数据插入到 Microsoft SQL Server Management Studio 18 中特定时间段的原始表中。

INSERT INTO dbo.trial ([turbineid], [createddate], [lastupdatedby],[lastupdateddate])
    SELECT 
        [turbineid], [createddate], [lastupdatedby], [lastupdateddate] 
    FROM 
        dbo.trial_January
    WHERE
        createddate BETWEEN (DATEPART(mm, createddate) = 01 
                             AND DATEPART(dd, createddate) = 01))
                        AND (DATEPART(mm, createddate) = 01 
                             AND DATEPART(dd, createddate) = 30)

尝试执行此查询时,我收到此错误:

'=' 附近的语法不正确。

标签: sql-server

解决方案


您正在尝试将日期与一些整数进行比较。你的 where 子句应该看起来更像这样

WHERE createddate BETWEEN (DATEFROMPARTS(DATEPART(YY,createddate),1,1)) AND (DATEFROMPARTS(DATEPART(YY,createddate),1,30))

推荐阅读