Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 无法修复sql查询中的语法错误_Sql Server - Fatal编程技术网

Sql server 无法修复sql查询中的语法错误

Sql server 无法修复sql查询中的语法错误,sql-server,Sql Server,我正在尝试使用下面的查询,在MicrosoftSQLServerManagementStudio 18中的特定时间段内将数据从临时表插入到原始表中 INSERT INTO dbo.trial ([turbineid], [createddate], [lastupdatedby],[lastupdateddate]) SELECT [turbineid], [createddate], [lastupdatedby], [lastupdateddate] FR

我正在尝试使用下面的查询,在MicrosoftSQLServerManagementStudio 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)
尝试执行此查询时,出现以下错误:

“=”附近的语法不正确


您的where条件不正确

 where DATEPART(mm , createddate) = 1

给你第一个月的结果。如果你的目的是寻找整个一月份,你不需要为这一天准备任何其他东西。这个克劳斯没有意义

 where  createddate between 
 (DATEPART(mm , createddate) = 01 AND DATEPART(dd, createddate) = 01))
  AND (DATEPART(mm, createddate) = 01 AND DATEPART(dd, createddate) = 30)
Between state需要两个日期来检查给定日期是否介于两个日期之间

例如:

SELECT 'true' WHERE GETDATE() BETWEEN GETDATE() -1 AND GETDATE() + 1
DATEPART(mm,CreatedDate)返回日期的月份

SELECT 'true' where  DATEPART(mm , GETDATE()) = 10 //Checks if the month of the given date is 10.
根据您的查询,您希望获得1月份的记录。所以你可以试试这个

 INSERT INTO dbo.trial ([turbineid], [createddate], [lastupdatedby],[lastupdateddate])
SELECT 
    [turbineid], [createddate], [lastupdatedby], [lastupdateddate] 
FROM 
    dbo.trial_January
WHERE
   DATEPART(MONTH, createddate) = 01 
   AND DATEPART(YEAR, createddate) = 2020 -- the year you want
                   
  

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

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

DATEPART(mm)
返回一个整数-因此您的检查不应该包括任何不必要的单引号-只要
DATEPART(MONTH,createdDate)=01
在名称包含单词“一月”的表中,为什么需要使用任何基于月份的逻辑作为筛选器?