【发布时间】:2019-07-23 13:51:58
【问题描述】:
我正在使用 DATEADD(year, -3, GETDATE()) 在滚动期间提取最近几年的数据。
我还有一个名为 Year 的列,我正在创建的视图使用 MyTable.Year 而不是 sql 关键字“year”。
例如 DATEADD(MyTable.year, -3, GETDATE())
每次在视图中都会解决它,这真的很烦人。我有点生疏了,离开这个已经快 4 年了。
我如何确保它使用关键字“年份”,我觉得它这样做很奇怪。对此的任何解释也会有所帮助。 SQL Server 2016
谢谢大家。
【问题讨论】:
-
“但观点很愚蠢” 老实说,我不这么认为。你说的没有道理。你说你想做
DATEADD(table.dbo.year, -3, GETDATE())),但看起来你正在尝试使用数据库table中的表Date作为DATEADD的第一个参数。使用表格来替换定义的时间段值是没有意义的。第一个参数的值是明确定义的,你当然不能为它传递一个表对象。 -
这绝对与查询引擎或查询如何编译无关 - Demo on db<>Fiddle。您所描述的听起来像是您的 IDE 中的智能感知正在发生的事情。您使用的是哪个 IDE?
-
如果您的编辑器在使用关键字
year时遇到问题,请尝试使用select dateadd(yy, -3, getdate())而不是select dateadd(year, -3, getdate()) -
您可以随时回答您自己的问题,解释您为什么会遇到这个问题以及解决了什么问题。这可能会帮助 SO 的未来用户遇到同样的问题
-
包含代码而不是图像。这些图像太小了,我无法阅读 SQL。
标签: sql sql-server sql-view dateadd