我正在尝试提取报告的数据,而我正在制作年度报告。表中的列格式为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');
有没有一种方法来实现这个目标?
答案 0 :(得分:12)
是的,事实上非常容易:
WHERE YEAR(A.[reimbursementDate]) = YEAR(GETDATE())
答案 1 :(得分:2)
如果性能是一个问题,这应该是一个更好的方法(虽然它不是可读的)
where A.[reimbursementDate] between
DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) and
DATEADD(MILLISECOND, -3, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))
那些时髦的DATEADD语句返回当年的第一天和最后一天(截至12月31日23:59:59.997)。由于reimbursementDate
不包含在函数中,因此查询将能够利用任何适用的索引。