sql 服务器 dateadd() 使用列名年份而不是关键字 'year'

sql server dateadd() using column name year and not keyword 'year'

我正在使用 DATEADD(year, -3, GETDATE()) 在一个滚动周期中提取最近几年的数据。

我还有一个名为 Year 的列,我正在创建的视图使用 MyTable.Year 而不是 sql 关键字 'year'.

例如 DATEADD(MyTable.year, -3, GETDATE())

它每次都在视图中解决它,这真的很烦人。我有点生疏了,大约 4 年了。

如何确保它使用关键字 'year',我觉得这样做很奇怪。对此的任何解释也会有所帮助。 SQL 服务器 2016

谢谢大家。

编辑:我已经编辑了我放错位置的模式符号并确定了 table 名称,很抱歉混淆

您可以将 table 放在子查询和别名 [Year] 列中。 像

SELECT ... FROM (SELECT [Year] AS "MyYear" FROM ...) X

(或使用 CTE)

那么年份就只代表关键字了。

不知道我理解的对不对,你想强制关键字,所以你想从当前日期减去3年,对吗?这应该有效:

SELECT DATEADD(yy, -3, GETDATE())

SELECT DATEADD(yyyy, -3, GETDATE())

(除非您有名为 yy 和 yyyy 的列;-))

否则请原谅我的误会...

您的编辑器似乎对关键字 YEAR 有疑问,并将其替换为来自也称为 year

的列中的值

这可以通过在 DateAdd 函数中使用关键字 year 的同义词来解决。
所以而不是

dateadd(year, -3, getdate())

使用

dateadd(yy, -3, getdate())