如何 Select 项目在 SQL 服务器中的特定时间内过期?

How To Select Items Getting Expired Within A Specific Time In SQL Server?

我正在使用 SQL Server 2008 和 C# Windows Forms 应用程序。产品 table 具有其他值以及到期日期,我想在网格中显示 ProductID, ProductName, AvailableQuantity, and ExpiryDate 这样我就可以让用户了解哪些商品会在到期日之前过期。

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

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

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

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

Msg 195, Level 15, State 10, Line 1
'TRUNC' is not a recognized built-in function name.

为什么我会收到这个错误?我在网上看到相同的代码运行良好,但是在我的案例中却产生了错误。还有其他方法可以满足我的要求吗?或者我是否必须以某种方式修改查询,这可以帮助我解决我的错误?

在 SQL 服务器中你应该这样做。

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

DateDiff 可用于计算两个日期之间的总时间范围。这些日期可以来自 table 个值,也可以是 "today's" 个日期。我建议您根据总天数而不是月数来区分,因为 "a month" 是一个经常变化的可变时间量。

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

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

与其尝试计算 "today plus 62 days" 是什么,然后尝试查看数据库值是否小于该值,该命令只是从当前日期中减去数据库值并检查它是否小于一个数字.

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

更多阅读 DateDiff