获得TSQL的当前年份

SBB*_*SBB 11 sql t-sql datetime

我有一些数据,我试图提取报告,我正在编写一份年度报告.表中的列格式为datetime.我正在尝试运行一个select语句来获取date =今年的所有结果.

例如:

SELECT  A.[id], A.[classXML]
FROM   tuitionSubmissions as A
WHERE A.[status] = 'Approved' AND A.[reimbursementDate] = THISYEAR
FOR    XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');
Run Code Online (Sandbox Code Playgroud)

有没有一种方法来实现这个?

Jus*_*son 18

是的,实际上非常容易:

WHERE YEAR(A.[reimbursementDate]) = YEAR(GETDATE())
Run Code Online (Sandbox Code Playgroud)

  • 然而,简单的方法并不是最有效的方法。那是不可说的。 (2认同)

Jer*_*rad 6

如果性能是一个问题,这应该是一个更好的方法(虽然它不那么可读)

where A.[reimbursementDate] between  
     DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) and
     DATEADD(MILLISECOND, -3, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))
Run Code Online (Sandbox Code Playgroud)

那些时髦的 DATEADD 语句返回当年的第一天和最后一天(截至 12 月 31 日 23:59:59.997)。由于reimbursementDate不包含在函数中,查询将能够利用任何适用的索引。