我正在使用此查询从adventureworksLT2008获取年份:
"select DATEPART(YYYY,SellStartDate) as Year from SalesLT.Product group by DATEPART(YYYY,SellStartDate)"
现在我想像1998年那样过年,并获得1998年的所有记录
"select DATEPART(YYYY,SellStartDate) as 'Years' from SalesLT.Product where Years = '1998'"
但是我收到了这个错误
无效的年份。 SellStartDate数据类型是datetime。
答案 0 :(得分:1)
Years
时未定义 WHERE
。查看查询的execution order。
像这样使用:
SELECT DATEPART(YYYY, SellStartDate) AS Years
FROM SalesLT.Product
WHERE DATEPART(YYYY, SellStartDate) = 1998
请DATEPART
函数返回int
。
答案 1 :(得分:0)
您可以将HAVING子句与GROUP BY语句一起使用以获取唯一值:
Select DATEPART(YYYY,SellStartDate) as Year from SalesLT.Product GROUP BY DATEPART(YYYY,SellStartDate)
HAVING DATEPART(YYYY,SellStartDate) = 1998
如果没有GROUP BY子句,请使用带有完整限定符列名称的comparison operator:
Select DATEPART(YYYY,SellStartDate) as 'Years' from SalesLT.Product where DATEPART(YYYY,SellStartDate) = 1998
只需使用DISTINCT
即可避免重复Select DISTINCT DATEPART(YYYY,SellStartDate) as 'Years' from SalesLT.Product where DATEPART(YYYY,SellStartDate) > 1998