Month(date) 和 DatePart(month, date) 之间有什么显着区别吗?

Rac*_*hel 6 sql-server-2005 sql-server

MSDN 声明Month(date)DatePart(month, date)返回完全相同的值,但是这两种方法,性能或其他方面有什么区别吗?

我正在构建一些基于月份聚合大量数据的查询,有时它们需要一段时间才能运行,所以我想确保我使用的是最有效的语法。

我目前使用的是 SQL Server 2005

JNK*_*JNK 7

我刚刚在 SQL Server 2008r2 中的一个较大的表(12,430,129 行)上运行了几个测试。

  • 该领域是 smalldatetime
  • 该字段未编入索引
  • 我在每次运行后更改处理顺序以消除页面缓存问题

结果:

MONTH()- 在 6662、6583、6661 和 6560 毫秒内运行。平均运行时间6616.5ms

DATEPART()- 在 6520、6584、6552 和 6608 毫秒内运行。平均运行时间6566ms

因此,似乎DATEPART() 确实要快一些。然而,这是一个十分之七的差异,所以它可能并不重要。