如何运行设置动态现货日期的查询?

时间:2019-05-24 15:22:01

标签: sql sql-server

我目前必须改进一个查询,该查询实际上可以将您运行该信息以来的信息带到过去两年。这意味着,如果我们今天运行它,那么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)))

1 个答案:

答案 0 :(得分:2)

SQL Server中的一种简单解决方案是使用datefromparts()

WHERE dbo.CustomerDetail.[Posting Date] >= DATEFROMPARTS(YEAR(GETDATE() - 2, 1, 1)

与索引兼容的解决方案使用QueryUtils.createCountQueryFor(String)

spring-data-jpa