我目前必须改进一个查询,该查询实际上可以将您运行该信息以来的信息带到过去两年。这意味着,如果我们今天运行它,那么24/05/2019将带动信息从24/05/2017到今天。
但是现在我将需要更改它,以便从运行查询的年份(01-01-201X)的当前开始日期开始,并考虑过去两年(01-01-201X-2)的信息,这意味着它应该在今天运行,并将带来从01-01-2017到01-01-2019的信息,并且应该根据您运行报表的日期而起作用。有什么建议吗?
这在SQL Server Management Studio中:
SELECT
dbo.Customer.[No.], dbo.Customer Detail.[Posting Date],
dbo.Customer Detail.[Initial Entry Global Dim. 1],
dbo.Customer.Blocked
FROM
dbo.Customer
INNER JOIN
dbo.Customer Detail ON dbo.Customer.[No.] = dbo.Customer Detail.[Customer No.]
WHERE
(dbo.Customer Detail.[Posting Date] >= DATEADD(yy, - 2, CONVERT(datetime, GETDATE(), 102)))
答案 0 :(得分:2)
SQL Server中的一种简单解决方案是使用datefromparts()
:
WHERE dbo.CustomerDetail.[Posting Date] >= DATEFROMPARTS(YEAR(GETDATE() - 2, 1, 1)
与索引兼容的解决方案使用QueryUtils.createCountQueryFor(String)
:
spring-data-jpa