如何在 SQL Server 中选择在特定时间内过期的项目



我正在使用SQL Server 2008和C# Windows Forms应用程序。产品表还有其他值以及到期日期,我想在网格中显示ProductID, ProductName, AvailableQuantity, and ExpiryDate,以便我可以让用户了解在截止日期之前过期的项目。

目的是仅将那些到期日越来越近的产品添加到该网格中,即在 2 个月内过期的产品。

我尝试使用TRUNC函数,如下所示:

select * 
from tblProducts 
where DateExpiry < TRUNC( SYSDATE ) + INTERVAL '62' DAY;

但我在 SQL Server 2008 中收到以下错误:

Msg 195,级别 15,状态 10,第 1
行 "TRUNC"不是可识别的内置函数名称。

为什么我会收到此错误?我在网上看到相同的代码工作正常,但是,在我的情况下它正在生成错误。还有其他方法可以满足我的要求吗?还是我必须以某种方式修改查询,这可以帮助我解决错误?

在 SQL Server 中,您应该这样做。

select * 
from tblProducts 
where DateExpiry < DATEADD(month, 2, GETDATE());

DateDiff 可用于计算两个日期之间的总时间范围。这些日期可以来自表值,也可以是"今天的"日期。我建议你按总天数而不是月来区分,因为"一个月"是一个经常变化的可变时间量。

select * 
from tblProducts 
where DATEDIFF(day, GETDATE(), DateExpiry) < 62

假设DateExpiry应该大于当前日期,因为我们正在寻找尚未过期但应该很快过期的值。

该命令不是尝试计算"今天加 62 天"是什么,然后尝试查看数据库值是否小于该值,而是从当前日期中减去数据库值并检查它是否小于一个数字。

这将选择从今天起不到 62 天内过期的任何内容。

更多阅读日期差异。

相关内容

  • 没有找到相关文章

最新更新