如何 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。
我正在使用 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。