不相容我得到這個錯誤,雖然我試圖搜索現有答案,我無法實現在MT查詢日期與詮釋
所以我有:
消息206,級別16,狀態2,行3 操作數類型衝突:日期與詮釋
不兼容這是我的查詢:
Select emp_desc, SUM(Price*Num_Of_Products)
from sales
Where sale_date between 2014-01-01 and 2017-01-01
GRoup By emp_desc
有什麼建議嗎? 非常感謝
不相容我得到這個錯誤,雖然我試圖搜索現有答案,我無法實現在MT查詢日期與詮釋
所以我有:
消息206,級別16,狀態2,行3 操作數類型衝突:日期與詮釋
不兼容這是我的查詢:
Select emp_desc, SUM(Price*Num_Of_Products)
from sales
Where sale_date between 2014-01-01 and 2017-01-01
GRoup By emp_desc
有什麼建議嗎? 非常感謝
在你的日期文字單引號:
select
emp_desc
, sum(Price * Num_Of_Products)
from sales
where sale_date >= '20140101'
and sale_date < '20170101'
group by emp_desc
此外,between
可能不會做你認爲這是做什麼。
參考:
唯一真正安全的格式在SQL Server中,至少
datetime
和smalldatetime
,日期/時間文本是:YYYYMMDD
和YYYY-MM-DDThh:mm:ss[.nnn]
- Bad habits to kick : mis-handling date/range queries - Aaron Bertrand
2014-01-01
是int - 2014
減去1
減去1
,或2012
。如果圍繞這些表達式用單引號('
),他們將成爲字符串,從字符串到日期的隱式轉換應該做的伎倆:
SELECT emp_desc, SUM(price * num_of_products)
FROM sales
WHERE sale_date BETWEEN '2014-01-01' AND '2017-01-01'
-- Here ----------^----------^-----^----------^
GROUP BY emp_desc
要麼你需要使用引號您所選日期
Where sale_date between '2014-01-01' and '2017-01-01' GRoup By emp_desc
或列SALE_DATE聲明爲INT 所以你將不得不使用
Where sale_date between 20140101 and 20170101 GRoup By emp_desc
以上內容由廣告肯定工程或只是丁單引號,你也可以嘗試這種方式,如果日期存儲在日期時間格式
Select emp_desc, SUM(Price*Num_Of_Products)
from sales
Where convert(varchar(10),sale_date,120) between '2014-01-01' and '2017-01-01'
GRoup By emp_desc
的可能的複製[Sql Server的操作數類型衝突:日期是不兼容INT(https://stackoverflow.com/questions/ 26019011/sql-server-operand-type-clash-date-is-incompatible-with-int) – rghome