SSMS 自动更正视图设计器中的日期部分
SSMS auto correcting datepart in view designer
我 运行 喜欢的超级烦人的边缘案例。
在一个视图中,我有一个 table,它有一个名为 'Year' 的列,它是一个整数。
在这个视图中,我试图根据去年的情况进行过滤,因此我使用了以下代码段。
WHERE Jobs.Year > YEAR(DATEADD(year, -1, GETDATE()))
但是 ssms,在它无限的智慧中,认为它是有帮助的,并将日期部分年份替换为年份列。
WHERE dbo.Jobs.Year > YEAR(DATEADD(dbo.Jobs.Year, - 1, GETDATE()))
有没有办法避免这种行为?
编辑:
这是在 SSMS 2014 上,似乎这个问题在某些更高版本中不存在。
从我的评论移到这里。
您的日期部分中的单词 "YEAR" 有问题,因为它是保留字。您可以进行更改以获得与以下相同的结果:
SELECT YEAR(DATEADD(YEAR, -1, GETDATE()))
至:
SELECT YEAR(DATEADD(yy, -1, GETDATE()))
这里列出了所有有效的日期部分供参考:
https://www.w3schools.com/sql/func_sqlserver_datepart.asp
我 运行 喜欢的超级烦人的边缘案例。
在一个视图中,我有一个 table,它有一个名为 'Year' 的列,它是一个整数。 在这个视图中,我试图根据去年的情况进行过滤,因此我使用了以下代码段。
WHERE Jobs.Year > YEAR(DATEADD(year, -1, GETDATE()))
但是 ssms,在它无限的智慧中,认为它是有帮助的,并将日期部分年份替换为年份列。
WHERE dbo.Jobs.Year > YEAR(DATEADD(dbo.Jobs.Year, - 1, GETDATE()))
有没有办法避免这种行为?
编辑: 这是在 SSMS 2014 上,似乎这个问题在某些更高版本中不存在。
从我的评论移到这里。
您的日期部分中的单词 "YEAR" 有问题,因为它是保留字。您可以进行更改以获得与以下相同的结果:
SELECT YEAR(DATEADD(YEAR, -1, GETDATE()))
至:
SELECT YEAR(DATEADD(yy, -1, GETDATE()))
这里列出了所有有效的日期部分供参考: https://www.w3schools.com/sql/func_sqlserver_datepart.asp