SQL Server 2019中DATEPART(HOUR FROM ...)语法兼容性及性质问询
SQL Server 2019 DATEPART特殊语法的问题解析
你碰到的这个用FROM替代逗号的DATEPART写法——SELECT DATEPART(HOUR FROM DATEADD(HOUR, -4, GETDATE())),是SQL Server 2019后期版本新增的标准SQL兼容扩展,既不是临时特性、Bug,也不是SSMS偷偷改写的结果。
具体说明:
- 这种写法是ANSI SQL:2016标准里规定的
DATEPART调用方式,SQL Server 2019在后续累积更新(比如15.0.2095这类版本)里加了对它的支持,目的是拉近和标准SQL的兼容性,让习惯写标准SQL的开发者不用改写法就能在SQL Server里用。 - 版本差异的原因很简单:SQL Server 2019的初始版本(像v15.0.2000.5)没带这个特性,是后面的更新补上的,所以不同小版本支持情况不一样。
- 至于没文档说明,是因为这类小的语法兼容更新通常不会单独写大篇幅文档,一般会藏在累积更新的发布说明里,或者后续官方文档更新时补到
DATEPART的章节里。
验证方法:
你可以在不同版本的实例里直接测试:
- 旧版本(比如v15.0.2000.5)执行这个语句会报语法错误;
- 新版本(比如15.0.2095)能正常运行,结果和传统写法
SELECT DATEPART(HOUR, DATEADD(HOUR, -4, GETDATE()))完全一致。
内容的提问来源于stack exchange,提问作者Julia Hayward
相关产品推荐
相关产品推荐

