Sql server 无法修复sql查询中的语法错误
我正在尝试使用下面的查询,在MicrosoftSQLServerManagementStudio 18中的特定时间段内将数据从临时表插入到原始表中Sql server 无法修复sql查询中的语法错误,sql-server,Sql Server,我正在尝试使用下面的查询,在MicrosoftSQLServerManagementStudio 18中的特定时间段内将数据从临时表插入到原始表中 INSERT INTO dbo.trial ([turbineid], [createddate], [lastupdatedby],[lastupdateddate]) SELECT [turbineid], [createddate], [lastupdatedby], [lastupdateddate] FR
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
在名称包含单词“一月”的表中,为什么需要使用任何基于月份的逻辑作为筛选器?