我有一个View列出了小于等于80天的记录。视图位于现有表( AeoiCaptureLog )上,该表已有过去的记录。
我想在视图中实现过滤器,因此日期条件(< = 80)仅对在实时环境中部署视图后插入的数据有效,并且不应考虑已有80天的现有数据或更少。但是在部署100天之后,它仍然应该返回最后80天的数据,因此我假设我们不能将视图创建日期用作参数。
CREATE VIEW [dbo].[vAeoiSurplusCaseCreation] AS
Select AccessNumber, DocumentID, LastModifiedDate, StatusCode
FROM AeoiCaptureLog
WHERE StatusCode IN (6, 13, 15)
AND DATEDIFF(dd, [LastModifiedDate], GETDATE()) <= 80
如果有任何疑问,请随时告诉我。
需要注意的重要事项是:
答案 0 :(得分:2)
对于SQL Server(Transact-SQL),我们可以这样做:
AND LastModifiedDate >= DATEADD(dd,GETDATE(),-80)
AND LastModifiedDate > CAST('2018-05-17' AS DATETIME)
其中的文字&#39; 2018-05-17&#39;代表&#34;部署的第1天&#34;
第一个条件回顾80天。
第二个条件回溯到指定的日期。
由于这两个都必须评估为TRUE,我们将返回限制为两个日期值中较大的一个。
我们可以使这个更丑陋,并使用复杂的CASE表达式返回两个日期值中较大的一个,并进行一次比较。
使用MySQL,它将是类似的方法
AND LastModifiedDate >= DATE(NOW()) + INTERVAL -80 DAYS
AND LastModifiedDate > '2018-05-17' + INTERVAL 0 DAYS