假设OrderDate
是日期。 YEAR(OrderDate)
和DATEPART(year,OrderDate)
(或DATEPART(yyyy,OrderDate)
或DATEPART(yy,OrderDate)
)之间有什么区别?感谢。
答案 0 :(得分:4)
他们都是一样的:
SELECT DATEPART(yy,GETDATE()), DATEPART(yyyy,GETDATE())
, DATEPART(year, GETDATE()), YEAR(GETDATE());
来自doc
年 - > yy,yyyy(缩写)
我会DATEPART
使用year
遵循EIBTI原则(明确比隐含更好)
还有一种可能性ODBC function
:
SELECT {fn YEAR(GETDATE())};
例如,要获取HOUR
,您无法使用内置函数:
SELECT HOUR(GETDATE())
-- error
SELECT DATEPART(hour, GETDATE())
-- datepart function
SELECT {fn HOUR(GETDATE())}
-- will work
<强> Rextester Demo 强>
答案 1 :(得分:1)
我尝试考虑与其他语言的兼容性,包括SQL风格。其他Microsoft产品(如C和VB)支持DATEPART。但MySQL支持Year()。因此,选择权取决于您的生态系统以及您最终可能将代码迁移到哪些内容。
答案 2 :(得分:1)
只是为了好玩,DateName()返回字符串值。
示例强>
Select 'Year '+datename(year,GetDate())
<强>返回强>
Year 2017